
Estoy intentando localizar un ejemplo de configuración de alto nivel para mi situación actual. Tenemos un certificado SSL comodín para múltiples subdominios que se encuentran en varios servidores IIS internos.
site1.example.com (X.X.X.194) -> IISServer01:8081
site2.example.com (X.X.X.194) -> IISServer01:8082
site3.example.com (X.X.X.194) -> IISServer02:8083
Estoy buscando manejar el tráfico SSL entrante a través de una entrada del servidor y luego pasar el dominio específico a la aplicación IIS interna. Parece que tengo 2 opciones:
Codifique una sección de ubicación para cada subdominio (parece desordenado por los ejemplos que he encontrado)
Reenvíe el tráfico no cifrado al mismo servidor nginx configurado con diferentes entradas de servidor para cada nombre de host de subdominio. (Al menos esto parece ser una opción).
Mi objetivo final es consolidar gran parte de nuestro tráfico SSL para que pase a través de nginx para que podamos usar HAProxy para equilibrar la carga de los servidores.
¿Funcionará el enfoque n.º 2 dentro de nginx si configuro correctamente las entradas proxy_set_header?
Imagino algo parecido a esto dentro de mi archivo de configuración final (usando el enfoque n.° 2):
server {
listen Y.Y.Y.174:443; #Internally routed IP address
server_name *.example.com;
proxy_pass http://Y.Y.Y.174:8081;
}
server {
listen Y.Y.Y.174:8081;
server_name site1.example.com;
-- NORMAL CONFIG ENTRIES --
proxy_pass http://IISServer01:8081;
}
server {
listen Y.Y.Y.174:8081;
server_name site2.example.com;
-- NORMAL CONFIG ENTRIES --
proxy_pass http://IISServer01:8082;
}
server {
listen Y.Y.Y.174:8081;
server_name site3.example.com;
-- NORMAL CONFIG ENTRIES --
proxy_pass http://IISServer02:8083;
}
Esta parece una manera, pero no estoy seguro de si es la mejor. ¿Me estoy perdiendo un enfoque más simple para esto?
Respuesta1
Haría algo como esto (probado con nginx 1.4.2, parece funcionar):
server {
listen 127.0.0.1:443 ssl;
server_name site1.example.com;
include common.conf;
location / {
proxy_pass http://127.0.0.2:8081;
}
}
server {
listen 127.0.0.1:443 ssl;
server_name site2.example.com;
include common.conf;
location / {
proxy_pass http://127.0.0.2:8082;
}
}
server {
listen 127.0.0.1:443 ssl;
server_name site3.example.com;
include common.conf;
location / {
proxy_pass http://127.0.0.3:8083;
}
}
Con al menos esto en common.conf
:
ssl on;
ssl_certificate /path/to/cert;
ssl_certificate_key /path/to/key;
Respuesta2
Lo creas o no, puedes hacer esto:
ssl_session_cache shared:SSL:2m;
ssl_session_timeout 5m;
server {
listen Y.Y.Y.174:443 default_server ssl;
server_name _;
ssl_certificate /etc/pki/tls/certs/server.chained.crt;
ssl_certificate_key /etc/pki/tls/private/server.key;
}
server {
listen Y.Y.Y.174:443 ssl;
server_name site1.example.com;
[...]
proxy_pass http://IISServer01:8081;
}
server {
listen Y.Y.Y.174:443 ssl;
server_name site2.example.com;
[...]
proxy_pass http://IISServer01:8082;
}
server {
listen Y.Y.Y.174:443 ssl;
server_name site3.example.com;
[...]
proxy_pass http://IISServer02:8083;
}
No incluye, el certificado se carga en la memoria solo una vez y la sesión incluso debería permanecer almacenada en caché a medida que el usuario pasa de un subdominio a otro, lo que le ahorra muchos caballos de fuerza en el protocolo de enlace.
No puedo encontrar ninguna documentación más alláesta publicación de falla del servidorNo puedo sugerir por qué esto funciona, pero puedo asegurarles que funciona.