![NGINX proxy inverso ssh a múltiples hosts](https://rvso.com/image/1605165/NGINX%20proxy%20inverso%20ssh%20a%20m%C3%BAltiples%20hosts.png)
Al usar NGINX, tengo varios servidores proxy inversos que funcionan con http(s) normales para varios sitios web. Solo tengo una dirección IP pública pero varios vhosts detrás de ella. Esta parte está funcionando como debería.
Quiero acceder a todos los hosts detrás de nginx; actualmente solo hay tres, pero habrá más en el futuro.
Como nginx está por encima de la versión 1.9.1, creo que era la versión que permitía transmisiones que comencé a configurar para ssh, más adelante querré agregar bases de datos a la mezcla y tal vez correo, pero por ahora ssh es la prioridad.
Entonces, para comenzar, agregué ssh_available y ssh_enabled al directorio nginx.
/etc/nginx/nginx.conf He agregado lo siguiente:
stream {
include /etc/nginx/ssh_enabled/*;
}
/etc/nginx/ssh_available/domain.com.rproxy.conf tengo lo siguiente:
upstream ssh {
server 192.168.1.61:22;
}
server {
listen 22;
proxy_pass ssh;
}
He utilizado el método habitual para agregar enlaces simbólicos en ssh_enabled a los archivos de configuración en ssh_available.
Esto me permite acceder a un host que está detrás de mi proxy inverso nginx, pero solo a un host.
Con esta configuración actual, la conexión SSH siempre llega al mismo host, sin importar si uso la IP pública, el subdominio o el fqdn.
¿Cómo podría convertir esto en algo más portátil para que pueda funcionar con múltiples nombres de host/dominio en lugar de solo una única IP/dominio?
Lo que quiero que suceda es usar ssh para usar un dominio y conectarme al servidor que lo aloja.
Respuesta1
Se me ocurrió una solución alternativa, lo que significa más puertos abiertos de los que me gustaría porque hasta la fecha ssh no acepta dominios, hay una solución IPV6 flotando, pero actualmente no es una solución para mí.
Entonces hay más puertos.
Aquí está mi solución. Reenvíe un pequeño rango de puertos a nginx, suficientes puertos para cada servidor. Puede elegir prácticamente cualquier rango de puertos o elegirlo según su elección, pero para hacer este ejemplo lo más simple posible, un rango es más fácil.
Modifiqué el archivo conf que creé en /etc/nginx/ssh_available/
upstream 59 {
server 192.168.1.59:22;
}
server {
listen 22059;
proxy_pass 59;
}
upstream 61 {
server 192.168.1.61:22;
}
server {
listen 22061;
proxy_pass 61;
}
upstream 62 {
server 192.168.1.62:22;
}
server {
listen 22062;
proxy_pass 62;
}
upstream 63 {
server 192.168.1.63:22;
}
server {
listen 22063;
proxy_pass 63;
}
Por supuesto, con esto estás limitado por la cantidad de direcciones IPV4 disponibles en tu red, IPV6 habría sido una mejor opción, pero aún no la tengo.
Tenga en cuenta que si utiliza este ejemplo tal como está, está anunciando una parte de su infraestructura de red al proporcionar la IP interna como número de puerto a cualquiera que quiera resolverlo. Realmente deberías seleccionar los puertos que abres y configurar la configuración apropiadamente.
Por último, no, en mi opinión, esta no es una gran respuesta, pero es una respuesta que funciona, por eso la publico, pero no la acepto como la solución. Es posible que tenga un método mejor para IPV4 que el que se me ocurrió y agradezco absolutamente sus respuestas.