Gostaria de pedir ajuda com a seguinte configuração do Nginx, para que URLs como https://www.mywebsite.com
sejam reescritos 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 OpenSSL no próprio servidor (Ubuntu 12.04). O que está acontecendo é que www.mywebsite.com
redireciona corretamente para mywebsite.com
, mashttps://www.mywebsite.com
nãoredirecionar para https://www.mywebsite.com
(ou seja, www
ainda aparece ao visualizar a página em um navegador). O que posso estar fazendo de errado?
Responder1
A solução é corrigir o primeiro bloco do servidor:
server {
listen 80;
listen 443;
server_name www.mywebsite.com;
return 301 $scheme://mywebsite.com$request_uri;
}
Por exemplo, você esqueceu de capturar as conexões www.mywebsite.com na porta SSL, só isso. Aliás, é a melhor forma de remover www do nome do site, boa escolha.
Responder2
Seu redirecionamento acontece em um host virtual que escuta apenas na porta 80. Para redirecionar solicitações que chegam por SSL, você precisa de um host virtual que escuta na porta 443 com SSL. A menos que todos os seus navegadores suportemSNI, você só poderá ter um host virtual SSL e, portanto, a regra precisará entrar no server
bloco SSL existente.
if ($host = www.mywebsite.com) {
rewrite ^ https://mywebsite.com$request_uri? permanent;
}