Tengo 2 dominios en un solo host usando NginX:

  1. Servidor completo con SSL (back-end de Python) en los puertos 80 y 443.

  2. Simplemente redirija a otro dominio, sin SSL.

Se describen en las secciones server de diferentes archivos .conf:

1.

server {
    listen 80;
    listen 443 ssl;
    server_name  verni-verni.ru www.verni-verni.ru;

    # Certificates
    ssl_certificate /var/www/SSL/ca.crt;
    ssl_certificate_key /var/www/SSL/private.key;

    # Logs
    ...

    # Static Content
    ...

    # Reverse Proxy
    location / {
        ...
    }
}

2.

server {
    listen 80;
#    listen 443;
    server_name  gdeclient.ru;

    rewrite ^/(.*)$ http://... redirect;
}

Si configuro solo 80 puertos para el segundo dominio, entonces no redirige las conexiones HTTPS.

Pero si configuro el puerto 443 también (sin SSL) para el segundo dominio, entonces el puerto 443 no funciona para el primer dominio, obtengo el siguiente error:

no se define "ssl_certificate" en el servidor que escucha en el puerto SSL mientras el protocolo de enlace SSL

Las preguntas:

  1. ¿Por qué el segundo servidor de redireccionamiento afecta al primero, si tienen diferentes nombres de dominio?

  2. ¿Es posible configurar la redirección HTTPS para el segundo servidor sin usar SSL y sin afectar al primer servidor?

2
Soaring Coder 16 oct. 2018 a las 15:34

2 respuestas

La mejor respuesta

En respuesta a tus preguntas:

  1. Nginx acepta la conexión en el puerto 443 y luego necesita decidir qué servidor usar para procesarlo. Vea cómo Nginx procesa una solicitud y Indicación del nombre del servidor.

  2. Si no tiene un certificado para el segundo dominio, no podrá aceptar conexiones HTTPS para ese dominio sin que el navegador se queje del certificado, incluso si solo desea redirigirlo a otro lugar.

Si solo desea evitar que las conexiones HTTPS al segundo dominio sean manejadas incorrectamente por el primero, simplemente agregue listen 443 ssl; al segundo dominio y haga que las declaraciones ssl_certificate sean globales o repítalas en el segundo Bloque server.

1
Richard Smith 16 oct. 2018 a las 13:50

¿Por qué el segundo servidor de redireccionamiento afecta al primero, si tienen diferentes nombres de dominio?

Porque el protocolo de enlace SSL y la conexión se establecen antes de que el navegador envíe una solicitud HTTP y nginx no conoce el nombre del servidor solicitado. En su caso, la solicitud va al bloque de servidor predeterminado (segundo bloque de servidor) para todas las solicitudes del puerto 443, no puede encontrar la configuración ssl_certificate y se queja.

Si hace que sus declaraciones ssl_certificate sean globales, las redirigirá al primer bloque del servidor correctamente.

1
ben5556 17 oct. 2018 a las 01:32