Problema de nombre_servidor de Nginx en HTTPS para múltiples aplicaciones (vhosts)

Problema de nombre_servidor de Nginx en HTTPS para múltiples aplicaciones (vhosts)

Tengo dos aplicaciones en el servidor que funcionaban perfectamente hasta que planeé cambiarlas a HTTPS.

Configuración de Nginx para la aplicación 1:

server_name abc.com my.abc.com static.abc.com

Configuración para la aplicación 2:

server_name _;

Antes de habilitar SSL, ambas aplicaciones funcionaban, por ejemplo

Aplicación1http://static.abc.com/some-assets.png

Aplicación2http://static.def.com/some-assets.png

Después de habilitar SSL

Aplicación1https://static.abc.com/some-assets.png

Aplicación2https://static.def.com/some-assets.png

Si intento acceder a la Aplicación 2 https://static.def.com/some-assets.pngahora, también apunto a la Aplicación 1 de alguna manera.

Intenté investigar y descubrí que si lo reemplazo server_name _;con server_name static.def.com;la configuración de Nginx de la aplicación 2, comienza a funcionar.

Mi pregunta: ¿es necesario que Nginx defina explícitamente los dominios si desea servirlos a través de HTTPS? ¿O es que algo con el protocolo de enlace SSL está fallando, etc. y termina así?

Actualizar:

Archivos de configuración de Nginx:

abc.conf

def.conf

Respuesta1

Como dijo Johannes, creo que tienes una idea errónea de lo que _significa server_name: absolutamente nada. La mayoría de las guías lo incluyen en su servidor general predeterminado para asegurarse de que no interfiera con ningún servidor virtual designado.

Lo que debes haber pasado por alto en lo que estás leyendo (o tal vez las personas que escribieron lo que estás leyendo se lo perdieron) es que un servidor predeterminado adecuado en realidad incluye la default_serveropción como parte de la listendirectiva. Lea nginx.org/r/listen para obtener más información.

Respuesta2

Puede depender del orden de las definiciones de su servidor. _no es un nombre especial, es simplemente un dominio no válido y por lo tanto nunca coincidirá. Eso hace que sea el mismo que los nombres de servidor en la otra definición de servidor para un host como static.def.com: Ambos no coinciden. Si no hay ninguna coincidencia, nginx simplemente tomará la primera definición de servidor.

información relacionada