NGINX - Redirecionando www para não-www após redirecionar http para https

1

Eu verifiquei algumas outras respostas para perguntas semelhantes, bem como tutoriais sobre DigitalOcean, etc., sem sucesso. Desculpe pelo que é provavelmente um problema muito óbvio - sou novo nisso.

Essencialmente, preciso configurar redirecionamentos para que http: //, link . e link . todos redirecionam para https: //.

Atualmente, https: // funciona bem e http: // redireciona para https: //. Preciso redirecionar o tráfego www porque o certificado SSL é configurado apenas para não www. No entanto, quando tentei adicionar outro bloco de servidor à configuração para redirecionar www (http e https) para https: //, o servidor fecha a conexão nas 4 variantes.

Aqui está minha configuração:

# HTTP - redirect to HTTPS
server {
    listen 80;
    server_name www.example.com example.com;
    return 301 https://example.com$request_uri;
}

# HTTPS www - redirect to non-www RESETS CONNECTION
#server {
#    listen 443;
#    server_name www.example.com;
#    return 301 https://example.com$request_uri;
#}


# HTTPS — proxy all requests to the Node app
server {
    # Enable HTTP/2
    listen 443 ssl http2;
    server_name example.com;

    # Use the Let’s Encrypt certificates
    ssl_certificate /etc/not/my/path/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/not/my/path/live/example.com/privkey.pem;

    # Include the SSL configuration from cipherli.st
    include snippets/ssl-params.conf;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://0.0.0.0:2368/;
        proxy_ssl_session_reuse off;
        proxy_set_header Host $http_host;
        proxy_cache_bypass $http_upgrade;
        proxy_redirect off;
    }
}

Alguém pode me dizer o que estou fazendo errado? Mais uma vez eu sei que provavelmente é dolorosamente óbvio, mas eu simplesmente não consigo fazer isso funcionar. Eu deveria estar fazendo isso com algo diferente de um redirecionamento NGINX?

    
por Lewis 27.11.2016 / 15:33

2 respostas

1

Você não pode redirecionar o tráfego www.example.com https para example.com , a menos que tenha o certificado para www.example.com . Negociação SSL usa nome de domínio, e o redirecionamento acontece somente após a camada SSL ter sido negociada.

    
por 01.12.2016 / 03:13
0
server {
    server_name www.example.com example.com
    listen 80;

    location / {
        rewrite ^/(.*)$ https://example.com/$1 permanent;
    }
}

server {
    server_name www.example.com;
    listen 443 ssl;

     [... ssl configuration ...]

    location / {
        rewrite ^/(.*)$ https://example.com/$1 permanent;
    }
}

server {
    server_name example.com;
    listen 443 ssl;


    [ ... main block ... ]
}
    
por 27.11.2016 / 16:02