1 votos

Nginx no-www redirigir a la www con SSL no funciona

He estado trabajando con él durante horas y todavía no puede ver cuál es el problema con mi config. Amablemente ver a continuación.

/etc/nginx/sites-enabled/default

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


server {
    listen 443 ssl;
    server_name example.com www.example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    ssl_ciphers 'ECDHE-RSA-AES128...;

    location / {
        include    uwsgi_params;
        uwsgi_pass    unix:/my_socket/site.sock;
    }    

    location /static/ {
        alias /my_static/location/;
    }

    location /media  {
        alias /my_media/location/;
    }



    location ~ /.well-known{
        allow all;
    }
    return 301 https://www.example.com$request_uri;
}

Cuando intento acceder example.com, www.example.com se le redirige a https://www.example.com(que es lo que quiero) pero la página no está funcionando, a menos que me quite la última línea de código a continuación.

return 301 https://www.example.com$request_uri;

Después de la eliminación de la línea de arriba, todos los enlaces están funcionando bien, pero no redireccionar a www.


Máquina:

  • Ubuntu 14.04
  • nginx/1.4.6 (Ubuntu) con uWSGI
  • DJango 1.8.4 que se ejecuta en Google Cloud Platform (Compute Engine)

2voto

Tero Kilkanen Puntos 4918

Sólo a modo de resumen, la forma correcta de configurar estas redirecciones es:

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

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    ssl_ciphers 'ECDHE-RSA-AES128...;

    return 301 https://www.example.com$request_uri;
}

server {
    listen 443 ssl;
    server_name www.example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ... rules for the actual website ...
}

Por lo tanto, tenemos un bloque de servidor de http para dominios example.com y www.example.com hacer las redirecciones.

A continuación, tenemos un bloque de servidor https para el dominio example.com realizar el redireccionamiento.

Luego tenemos el bloque de servidor https para el dominio www.example.com, que contiene la configuración para el sitio web real.

0voto

Ryan De Gannes Puntos 16

Como se mencionó en el comentario, usted debe agregar el contenido en su 443 bloque.

Por ejemplo, usted debe agregar aguas arriba y adelante todos los pedidos.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: