Jak przekierować port 80 do innego portu w samemachine?


39

Jak mogę przekazywać żądania przychodzące przez port 80 do innego portu na tym samym komputerze z systemem Linux?

Robiłem to przez zmianę nat.conf, ale ten komputer, którego używam, nie ma NAT. Jaka jest alternatywa?


Brak NAT lub po prostu brak nat.conf? Czy wypróbowałeś już jakieś reguły iptables przy użyciu NAT?
Ben Swinburne,

Odpowiedzi:


47

Przekierowanie można wykonać za pomocą 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. Robi to od lat
Alexander Pogrebnyak

1
Co powiesz na Windows Server?
Luc

O rany, właśnie tego szukałem, uwielbiam!
neurosnap

Początkowo nie działało dla mnie, ale było w porządku, gdy go użyłemsudo
mdiscenza

1
co zrobić, jeśli nie ma interfejsu eth0? dlaczego nie skorzystać z interfejsu pętli zwrotnej?
harschware

15

Właśnie znalazłem się w tym pytaniu i nie mogłem znaleźć łatwego sposobu. Nie chcę instalować Nginx na moim komputerze, aby wykonać to proste przekierowanie portów.

Rinetdnie działało dla mnie, brak działającego pakietu dla mojej dystrybucji. socatZamiast tego poszedłem . Super proste:

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

Należy uruchomić, suaby móc nasłuchiwać na porcie 80.


Myślę, że konfiguracja Rinetd jest łatwiejsza.
johnshen64

socat działa idealnie!
viv

10

Powinieneś rozważyć użycie odwrotnego proxy , takiego jak Nginx . Na przykład możesz umieścić coś takiego w swoim nginx.confpliku:

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
Czemu? Nie muszę się z tym nie zgadzać, ale czy istnieje dobry powód, dla którego nie chciałbyś, aby tak się stało ™ na stosie sieciowym?
Oli

@Oli Ta metoda odwrotnego proxy nie wpłynie na wiele innych wirtualnych hostów na serwerze, co miałoby miejsce, gdyby zrobił to iptables, ponieważ iptables nic nie wie o wirtualnych hostach.
popiół
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.