Conflicto de configuración de dos sitios de nginx

Conflicto de configuración de dos sitios de nginx

Tengo nginx configurado para uno de mis dominios. Funciona como interfaz para el servidor de aplicaciones Wildfly. Un día decidí configurar el entorno de pruebas beta en la misma máquina. Entonces agregué otro subdominio a la configuración. Después de reiniciar, nginx se detuvo para servir la primera aplicación. Mis archivos de configuración son:

subdominio principal:

server {
    listen 80;
    server_name sub.example.com;
    return 301 https://$host$request_uri;
}

server {

    listen 443;
    server_name sub.example.com;

    ssl_certificate           /etc/nginx/ssl/bundle.crt;
    ssl_certificate_key       /etc/nginx/ssl/sub.example.com.key;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/sub.example.com.access.log;

    location / {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;

      proxy_pass          http://localhost:8080;
      proxy_read_timeout  90;
    }
}

subdominio de prueba:

server {
    listen 443;
    server_name sub-test.example.com;
    return 301 http://$host$request_uri;
}

server {

    listen 80;
    server_name sub-test.example.com;


    access_log            /var/log/nginx/sub-test.example.com.access.log;

    location / {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;

      proxy_pass          http://localhost:8080;
      proxy_read_timeout  90;

    }
}

Debo agregar que cada una de las configuraciones anteriores funciona como se esperaba cuando está sola. Pero juntos no se agradan. La solicitud del primero de ellos devuelve el estado HTTP NO ENCONTRADO.

Por supuesto, el problema puede estar ubicado en mi servidor Wildfly. Está configurado para manejar hosts virtuales y no estoy muy seguro de que esté bien. Pero cuando se ejecutan ambas aplicaciones y solo una de ellas es proxy de nginx, funciona bien.

Gracias por la ayuda.

Respuesta1

Patryk, desafortunadamente no puedes configurar más de un servidor HTTPS basado en nombres. Las explicaciones son largas, pero puedes comprobarlas.aquípara obtener información detallada y ejemplos (basados ​​en Apache, no tengo idea sobre nginx)

Respuesta2

Puede utilizar más de un sitio https.

La tecnología se llama SNI o indicación del nombre del servidor.Referencia

Al sacar la parte SSL de las configuraciones del servidor, también reduce la revisión para configurar los certificados. Utilizo la siguiente estructura en mis servidores proxy inversos:

sites.d/ | -ssl.conf | -vhost1.conf | -vhost2.conf

ssl.conf luego contiene:

ssl_certificate /etc/ssl/certs/ssl.crt; ssl_certificate_key /etc/ssl/certs/server.key;

Otra opción sería el uso de certificados separados con diferentes nombres comunes.

información relacionada