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
nginx
agit en tant quehttp
mandataire. Si vous le définissez pour inverser le port proxy 22, il ne vous permettra pas de transmettre le trafic SSH - uniquement lehttp
trafic vers le serveur SSH, qui échouera évidemment.Réponses:
Le protocole ssh ne repose pas sur HTTP, et, en tant que telle, ne peut pas être par la approximé régulière
proxy_pass
dengx_http_proxy_module
Cependant, récemment, à partir de nginx 1.9.0 (publié comme stable avec 1.10.0 le 26/04/2016), nginx a pris en charge la fonction de proxy de flux TCP , ce qui signifie que si vous avez une version assez récente de nginx, vous pouvez, en fait, les connexions proxy ssh avec elle (cependant, notez que vous ne pourriez pas ajouter quelque chose comme le
X-Real-IP
à la connexion proxy, car cela n'est pas basé sur HTTP).Pour plus d'informations et d'exemples, consultez:
la source
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
https://www.nginx.com/resources/admin-guide/tcp-load-balancing/
la source
ssh [email protected]
etssh [email protected]
- ce serait génial. C'est la limitation du protocole (SSH ne donnera pas les utilisations du client de nom DNS)srv1
et 222 poursrv2
), soit en utilisant des sessions ssh imbriquées, où vous commencez par ssh dans le serveur / IP public, et à partir de là, ssh dans les feuilles; par exemplessh [email protected] 'ssh [email protected]'
.HOST
tête, il est donc facile de distinguer le site qu'il cible ... Les sessions SSH imbriquées sont en quelque sorte une solution mais en désordre - cela fonctionne cependant. Je me suis retrouvé avec différents ports sur notre réseau de périphérie - le bon vieux NAT comme la solution la plus KISS et la plus fiable.