
Tengo una dirección IP pública. Estoy intentando permitir el acceso a través de la IP pública en los puertos 80 y 443 a múltiples servicios, diferenciados por el nombre del servidor solicitado.
SIN EMBARGO, un servicio requiere untcpproxy inverso en los puertos 80 y 443 en la IP pública para operar. Otro requiere un proxy inverso TCP pero solo en el puerto 443. El resto son solo sitios web y están bien con un proxy inverso http, pero quiero que los sitios web sean accesibles públicamente en los puertos 80 y 443 para que sea más fácil para los visitantes y para letsencrypt.
Puedo activar tantas máquinas virtuales e IP privadas como sea necesario para mantenerlo simple, pero limitado a una dirección IP pública.
¿Puedo hacer esto con la configuración de nginx como proxy inverso usando SNI? En teoría, creo que debería poder transmitir tcp todo por nombre de host usando SNI dirigido al servidor apropiado, con un segundo servidor web que tenga los sitios web configurados para escuchar en diferentes puertos. Por ejemplo, nginx.conf:
stream {
map $ssl_preread_server_name $name {
serviceone.domain.tld serviceone;
servicetwo.domain.tld servicetwo;
website1.domain.tld website1;
website2.domain.tld website2;
}
upstream serviceone {
server 10.1.99.7:443;
}
upstream servicetwo {
server 10.1.99.20:443;
}
upstream website1 {
server 10.1.99.30:10443;
}
upstream website2 {
server 10.1.99.30:10444;
}
server {
listen 443;
listen 80;
resolver 8.8.8.8;
proxy_pass $name;
ssl_preread on;
}
}
Tengo algo que funciona de manera similar a lo anterior en mi nginx.conf, pero me cuesta un poco comprender cómo entran en la ecuación las solicitudes del puerto 80 (simplemente presioné escuchar 80 en el bloque del servidor, pero no pude explicar cómo se manejan las solicitudes en términos de diferenciar entre 443 y 80 si se solicita el mismo nombre de servidor)
Estoy abierto a mejores formas de hacerlo también usando nginx o haproxy, etc. ¡Gracias!
Respuesta1
Simplemente use bloques de servidor{...} separados para cada nombre de host.
Hace el trabajo sin depender de un módulo adicional y le ahorrará MUCHAS molestias si los servidores ascendentes difieren en la configuración requerida en el proxy.