Neste momento, todos os pedidos vão atingir este bloco de servidores:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name _; # This doesn't do anything
rewrite ^ $scheme://www.example.com$request_uri permanent;
# Rest of file irrelevant
}
Porque: nenhum bloco de servidor tem um server_name válido (portanto, nunca haverá correspondência de nome de host) e este é o default_server.
Use nomes de servidor apropriados
Portanto, para sempre redirecionar as solicitações que atingem o servidor para um determinado nome de host, certifique-se de que seja um bloco de servidor explicitamente para www.example.com
:
server {
listen 80;
listen [::]:80 ipv6only=on;
server_name www.example.com;
# Everything else from "Tomcat server block"
# or the proxy_pass config as appropriate
}
E redirecione as solicitações com qualquer outro nome de host para ele:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
return 301 http://www.example.com$request_uri;
# Nothing else, because it wouldn't do anything
}
Na nota acima, return 301
é usado porque é considerado uma prática melhor do que uma regra de reescrita incondicional.