Come inoltrare la porta 80 a un'altra porta sulla samemachine?


39

Come posso inoltrare le richieste in arrivo sulla porta 80 a un'altra porta sulla stessa macchina Linux?

Lo facevo cambiando nat.conf, ma questa macchina che sto usando non ha NAT. Qual è l'alternativa?


Nessun NAT di sorta o semplicemente nessun nat.conf? Hai provato qualche regola di iptables usando NAT?
Ben Swinburne,

Risposte:


47

È possibile eseguire il reindirizzamento con iptables:

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

+1. Faccio questo da anni
Alexander Pogrebnyak,

1
Che ne dici di Windows Server?
Luc,

Oh amico, questo è esattamente quello che stavo cercando, complimenti!
neurosnap

All'inizio non ha funzionato per me, ma andava bene quando l'ho usatosudo
mdiscenza il

1
cosa fare se nessuna interfaccia eth0? perché non usare l'interfaccia di loopback?
harschware,

15

Mi sono appena trovato in questa domanda e non sono riuscito a trovare un modo semplice. Non voglio installare Nginx sul mio computer per fare questo semplice port forwarding.

Rinetdnon ha funzionato per me, nessun pacchetto funzionante per la mia distribuzione. Sono andato socatinvece. Super semplice:

socat TCP-LISTEN:80,fork TCP:127.0.0.1:5000

Deve essere eseguito super poter ascoltare sulla porta 80.


La configurazione di Rinetd è più facile credo.
johnshen64,

socat funziona perfettamente!
viv

10

Dovresti guardare usando un proxy inverso , come Nginx . Ad esempio, potresti inserire qualcosa del genere nel tuo nginx.conffile:

server {
    listen         80;

    server_name    your_ip_address your_server_name

    access_log   /var/log/nginx/your_domain/access.log ;
    error_log    /var/log/nginx/your_domain/error.log info ;

    location / {
        proxy_pass  http://127.0.0.1:3000;   # pass requests to the destination
    }
}

2
Perché? Non sono necessariamente in disaccordo, ma c'è una buona ragione per cui non vorresti che ciò accada ™ nello stack di rete?
Oli,

@Oli Questo metodo di proxy inverso non influirà su numerosi altri host virtuali sul server, il che si verificherebbe se iptables lo farebbe poiché iptables non conosce nulla di host virtuali.
cenere
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.