Wie leite ich Port 80 an einen anderen Port auf der Samemachine weiter?


39

Wie kann ich Anfragen, die über Port 80 eingehen, an einen anderen Port auf demselben Linux-Computer weiterleiten?

Früher habe ich das durch Ändern gemacht nat.conf, aber dieser Computer, den ich verwende, hat kein NAT. Was ist die Alternative?


Kein NAT oder nur keine nat.conf? Haben Sie Iptables-Regeln mit NAT ausprobiert?
Ben Swinburne

Antworten:


47

Sie können die Umleitung mit iptables durchführen:

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. Ich mache das schon seit Jahren
Alexander Pogrebnyak

1
Wie wäre es mit Windows Server?
Luc

Oh Mann, das ist genau das, wonach ich gesucht habe, ein dickes Lob!
Neurosnap

Für mich getan hat zunächst keine Arbeit, aber es war in Ordnung , wenn ich gebrauchtsudo
mdiscenza

1
was tun wenn keine eth0 schnittstelle warum nicht Loopback-Schnittstelle verwenden?
Harschware

15

Ich befand mich gerade in dieser Frage und konnte keinen einfachen Weg finden. Ich möchte Nginx nicht auf meinem Computer installieren, um diese einfache Portweiterleitung durchzuführen.

Rinetdhat bei mir nicht funktioniert, kein Arbeitspaket für meine Distribution. Ich ging socatstattdessen für . Super einfach:

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

Muss sulaufen, um am Port mithören zu können 80.


Rinetd-Setup ist meiner Meinung nach einfacher.
Johnshen64

socat funktioniert perfekt!
viv

10

Sie sollten einen Reverse-Proxy wie Nginx verwenden . Sie könnten beispielsweise Folgendes in Ihre nginx.confDatei einfügen:

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
Warum? Ich bin nicht unbedingt anderer Meinung, aber gibt es einen guten Grund, warum Sie nicht möchten, dass dies einfach im Netzwerkstapel passiert?
Oli

@Oli Diese Reverse-Proxy-Methode wirkt sich nicht auf zahlreiche andere virtuelle Hosts auf dem Server aus. Dies würde der Fall sein, wenn iptables dies tun würde, da iptables nichts über virtuelle Hosts weiß.
Asche
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.