Nginx-Remove WWW de HTTPS

1

Gostaria de pedir ajuda com a seguinte configuração do Nginx, para que URLs como https://www.mywebsite.com seja reescrito como https://mywebsite.com. Atualmente, estou usando a seguinte configuração:

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

    # Some more settings...
}
server {
    listen 443 ssl;
    server_name mywebsite.com;

    ssl_certificate path_to_ssl_certificate;
    ssl_certificate_key path_to_ssl_certificate_key;

    # Some more settings...
}

Caso isso seja importante, o certificado que estou usando é um certificado SSL curinga que foi autoassinado usando o OpenSSL no próprio servidor (Ubuntu 12.04). O que está acontecendo é que www.mywebsite.com redireciona corretamente para mywebsite.com, mas https://www.mywebsite.com não redirecionar para https://www.mywebsite.com (isto é, o www ainda aparece ao visualizar a página em um navegador). O que posso estar fazendo errado?

NetStudent
fonte

Respostas:

3

A solução está consertando o primeiro bloco de servidores para isso:

server {
    listen 80;
    listen 443;
    server_name www.mywebsite.com;
    return 301 $scheme://mywebsite.com$request_uri;
}

Por exemplo. você esqueceu de pegar as conexões do www.mywebsite.com na porta ssl, isso é tudo. By the way, é a melhor maneira de remover www do nome do site, boa escolha.

Dmitry Verkhoturov
fonte
0

Seu redirecionamento acontece em um host virtual apenas ouvindo na porta 80. Para redirecionar as solicitações recebidas por SSL, você precisa de um host virtual que atenda na porta 443 com SSL. A menos que todos os seus navegadores suportem SNI , você pode ter apenas um host virtual SSL e, portanto, a regra precisa entrar em seu SSL existente server quadra.

if ($host = www.mywebsite.com) {
    rewrite ^ https://mywebsite.com$request_uri? permanent;
}
mgorven
fonte
Downvoted por causa de wiki.nginx.org/IfIsEvil
Dmitry Verkhoturov