Como configurar o NGINX como um proxy reverso para números de porta diferentes?

11
I have NGINX configured like this as a reverse proxy for http requests:

server {
    listen 80;
    server_name 203.0.113.2;

    proxy_set_header X-Real-IP  $remote_addr; # pass on real client IP

    location / {
        proxy_pass http://203.0.113.1:3000;
    }
}

Eu também quero proxy ssh (Port 22) pedidos. Posso adicionar outro bloco de servidor como este ao mesmo arquivo de configuração:

server {
    listen 22;
    server_name 203.0.113.2;

    proxy_set_header X-Real-IP  $remote_addr; # pass on real client IP

    location / {
        proxy_pass http://203.0.113.1:22;
    }
}

De tal forma que o resultado final é este:

server {
    listen 80;
    server_name 203.0.113.2;

    proxy_set_header X-Real-IP  $remote_addr; # pass on real client IP

    location / {
        proxy_pass http://203.0.113.1:3000;
    }
}
server {
    listen 22;
    server_name 203.0.113.2;

    proxy_set_header X-Real-IP  $remote_addr; # pass on real client IP

    location / {
        proxy_pass http://203.0.113.1:22;
    }
}

TIA,
Ole

    
por Ole 16.06.2016 / 20:07

2 respostas

10

O protocolo ssh não é baseado em HTTP e, como tal, não pode ser intermediado por proxy regular proxy_pass de ngx_http_proxy_module

No entanto, recentemente, começando com nginx 1.9.0 (lançado como estável com 1.10.0 em 2016-04-26) , nginx ganhou suporte para fazer TCP stream proxying, o que significa que se você tiver uma versão recente do nginx, você pode, de fato, fazer proxy ssh com ele (no entanto, note que você não seria capaz de adicionar nada como o X-Real-IP à conexão proxy, pois isso não é baseado em HTTP).

Para mais informações e exemplos, veja:

por 04.07.2016 / 00:51
4

Desde o Nginx Versão 1.9.0, NGINX suporta o módulo ngx_stream_core_module, ele deve ser ativado com o --with-stream. Quando o módulo de fluxo está habilitado, eles são possíveis para o proxy tcp do protocolo ssh

stream {
    upstream ssh {
        server 192.168.1.12:22;
    }
        server {
        listen        12345;
        proxy_pass    ssh;

    }

}

link

    
por 19.05.2017 / 18:48

Tags