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;
}
}
También quiero proxy ssh (puerto 22) solicitudes. ¿Puedo agregar otro bloque de servidor como este al mismo archivo de configuración:
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;
}
}
Tal que el resultado final es 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
nginx
está actuando como unhttp
proxy. Si lo configura para invertir el puerto proxy 22, no le permitirá pasar tráfico SSH, solohttp
tráfico al servidor SSH, lo que obviamente fallará.Respuestas:
El protocolo ssh no se basa en HTTP y, como tal, no se puede representar a través
proxy_pass
dengx_http_proxy_module
Sin embargo, recientemente, comenzando con nginx 1.9.0 (lanzado como estable con 1.10.0 el 26/04/2016), nginx obtuvo soporte para hacer proxying de flujo TCP , lo que significa que si tiene una versión de nginx lo suficientemente reciente, de hecho, puede hacer conexiones proxy ssh con él (sin embargo, tenga en cuenta que no podrá agregar nada parecido
X-Real-IP
a la conexión proxy, ya que esto no se basa en HTTP).Para obtener más información y ejemplos, eche un vistazo a:
fuente
Desde Nginx Versión 1.9.0, NGINX admite el módulo ngx_stream_core_module, debe habilitarse con --with-stream. Cuando el módulo de transmisión está habilitado, es posible usar el protocolo TCP tsh proxy
https://www.nginx.com/resources/admin-guide/tcp-load-balancing/
fuente
ssh [email protected]
yssh [email protected]
, sería genial. Es la limitación de protocolo (SSH no dará a conocer los usos del cliente de nombre DNS)srv1
y 222 parasrv2
), o usando sesiones ssh anidadas, donde ssh primero en el servidor público / IP, y desde allí, ssh en las hojas; por ejemplo,ssh [email protected] 'ssh [email protected]'
.HOST
encabezado, por lo que es fácil distinguir a qué sitio se dirige ... Las sesiones SSH anidadas son una solución pero desordenada, aunque eso funciona. Terminé con diferentes puertos en nuestra red perimetral, el viejo y viejo NAT como la solución más confiable y de KISS.