Nginx redireciona http: // www e http / https nu para https: // www

Gostaria de redirecionar todo o tráfego dos seguintes domínios:

http://domain.comhttp://www.domain.comhttps://domain.com

para

https://www.domain.com

Eu tenho um certificado SSL para o domínio acima. Ele hospeda um aplicativo Rails, servido pelo Passenger.

Para realizar o redirecionamento de domínio direto, configurei um redirecionamento de URL na minha conta DNSimple:

URL domain.com  3600  https://www.domain.com

Os blocos do meu servidor são os seguintes (Inspirado emNginx no-www para www e www para no-www entre outros):

server {
    listen          80;
    listen          443;
    server_name     domain.com;

    ssl                             on;
    ssl_certificate                 /etc/ssl/domain-ssl.crt;
    ssl_certificate_key             /etc/ssl/domain.key;
    ssl_session_timeout             5m;
    ssl_protocols                   SSLv2 SSLv3 TLSv1;
    ssl_ciphers                     HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers       on;

    server_tokens   off;
    access_log      /dev/null;
    error_log       /dev/null;

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

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

    root                            /home/deploy/app/current/public;
    passenger_enabled               on;
    passenger_app_env               production;
    passenger_set_cgi_param         HTTP_X_FORWARDED_PROTO https;

    ssl                             on;
    ssl_certificate                 /etc/ssl/domain-ssl.crt;
    ssl_certificate_key             /etc/ssl/domain.key;
    ssl_session_timeout             5m;
    ssl_protocols                   SSLv2 SSLv3 TLSv1;
    ssl_ciphers                     HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers       on;
}

passenger_pre_start https://www.domain.com;

O que funciona:

domínio nu é redirecionado para protegerhttps://wwwhttp://www domínio é redirecionado para protegerhttps://wwwhttps:// www funciona

O que não faz:

Nuhttps:// não funciona, os navegadores lançam um servidor não encontrado

Basicamente, quero redirecionar todo o tráfego para o segurohttps://www.domain.com. O que estou perdendo aqui?

questionAnswers(4)

yourAnswerToTheQuestion