Estou tentando fazer o nginx redirecionar todas as solicitações recebidas de qualquer domínio adicionando ou removendo um www. prefixo.
Isso é para um pequeno serviço de redirecionamento. Se você apontar www.any.domain para ele, ele deve redirecionar www.any.domain / * para any.domain / *. E se você apontar any.domain para ele, ele deve redirecionar any.domain / * para www.any.domain /*.
Isso não causará um loop de redirecionamento na prática, porque apenas um dos dois domínios (any.domain ou www.any.domain) estaria apontando para este serviço. O outro para o seu site em outro servidor.
Isso deve funcionar com qualquer domínio. Milhares de diferentes, então tem que ter uma correspondência curinga regex. O fato de que qualquer coisa na internet possa ser apontada não é uma preocupação da nginx, porque isso será tratado em uma camada acima / antes dela. Cada pedido com um cabeçalho HTTP_HOST terá um www ou não e, em ambos os casos, deve ser redirecionado, portanto, o servidor deve redirecionar todas as solicitações recebidas.
O caso em que um domínio não começa com www. é bastante fácil, mas não consigo descobrir como capturar os casos em que começa com www. e só use o resto do domínio.
Eu tentei pesquisar, mas a) quase ninguém redireciona os dois caminhos ao mesmo tempo, b) a maioria das pessoas só se preocupam com um domínio, então eles codificam e c) depois que você passa, as pessoas tendem a cantar "SE É MAL". Então isso não ajuda muito.
Isso é o que eu tenho no momento:
http {
server {
listen 80 default_server;
server_name _;
# add www. to URLs that don't start with it.
if ($host !~* ^www\.) {
rewrite ^(.*)$ http://www.$host$1 permanent;
}
# but what about URLs that DO start with www.? How do I remove it?
}
}
Isso é para uso na configuração do DNS do seu site. Se você quiser que seu site seja exibido em mydomain.com, aponte mydomain.com para seu site e www.mydomain.com para esse redirecionador. Se você quiser que seu site seja exibido em www.mydomain.com, você aponta www.mydomain.com para o seu site e mydomain.com para esse redirecionador.