Como encaminhar a porta 80 para outra porta na mesma máquina?


39

Como encaminhar solicitações que chegam na porta 80 para outra porta na mesma máquina Linux?

Eu costumava fazer isso alterando nat.conf, mas esta máquina que estou usando não tem NAT. Qual a alternativa?


Não existe nenhum NAT ou apenas nat.conf? Você já tentou alguma regra do iptables usando NAT?
211111 Ben Ben Swinburne

Respostas:


47

Você pode realizar o redirecionamento com o 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. Fazendo isso há anos #
Alexander Pogrebnyak

11
Que tal no Windows Server?
Luc

Oh cara, isso é exatamente o que eu estava procurando, parabéns!
Neurosnap

Não funcionou para mim em primeiro lugar, mas foi bom quando eu useisudo
mdiscenza

11
o que fazer se não houver interface eth0? por que não usar interface de loopback?
harschware

15

Acabei de me encontrar nessa questão e não consegui encontrar uma maneira fácil. Não quero instalar o Nginx na minha máquina para fazer esse simples encaminhamento de porta.

Rinetdnão funcionou para mim, nenhum pacote de trabalho para minha distribuição. Eu fui em socatvez disso. Super simples:

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

Deve ser executado supara poder ouvir na porta 80.


A configuração do Rinetd é mais fácil, eu acho.
johnshen64

socat funciona perfeitamente!
viv

10

Você deve usar um proxy reverso , como o Nginx . Por exemplo, você pode colocar algo assim no seu nginx.confarquivo:

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
Por quê? Eu não discordo necessariamente, mas há um bom motivo para você não querer que isso aconteça ™ na pilha de rede?
Oli

@Oli Esse método de proxy reverso não afetará muitos outros hosts virtuais no servidor, o que ocorreria se o iptables o fizesse, pois o iptables não sabe nada sobre hosts virtuais.
ash
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.