web-dev-qa-db-fra.com

Comment configurer NGINX en tant que proxy inverse pour différents numéros de port?

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;
    }
}

Je veux également proxy des demandes ssh (Port 22). Puis-je ajouter un autre bloc serveur comme celui-ci au même fichier de configuration:

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;
    }
}

Tels que le résultat final est le suivant:

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

17
Ole

Le protocole ssh n'est pas basé sur HTTP et, en tant que tel, ne peut pas être mandaté par le biais du --- proxy_pass sur ngx_http_proxy_module

Cependant, récemment, à partir de nginx 1.9.0 (publié comme stable avec 1.10.0 le 2016-04-26), nginx a obtenu un support pour faire TCP stream proxy, ce qui signifie que si vous avez une version assez récente de nginx, vous pouvez en fait établir des connexions proxy ssh avec lui (cependant, notez que vous ne pourriez pas ajouter quelque chose comme X-Real-IP à la connexion proxy, car elle n'est pas basée sur HTTP).

Pour plus d'informations et d'exemples, consultez:

14
cnst

Depuis Nginx version 1.9.0, NGINX prend en charge le module ngx_stream_core_module, il doit être activé avec le --with-stream. Lorsque le module de flux est activé, il est possible de faire un proxy TCP TCP

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

    }

}

https://www.nginx.com/resources/admin-guide/tcp-load-balancing/

10
Hendi Fauzi