Nginx reescrever e - char em nome de domínio

1

Eu tenho nome de domínio que contém - char. Por exemplo, my-domain.com. Quando uso reescrita, o Nginx reescreve o URL incorretamente, o navegador é redirecionado para my.com em vez de my-domain.com. O que está errado na minha regra de reescrita?

server {
    listen      80;
    server_name     www.my-domain.com;
    rewrite     ^/(.*) https://www.my-domain.com permanent;
}
    
por newbie 29.04.2012 / 20:04

1 resposta

2

Parece não haver nada de errado com o bloco de servidor que você usou.

Eu testei o bloco exato que você forneceu, com uma máquina virtual CentOS 6.2 rodando o nginx 1.0.13 e o nginx 1.2.0. Eu usei o curl para fornecer o cabeçalho do Host correspondente:

curl --header "Host:www.my-domain.com" --head 127.0.0.1

A resposta não mostrou nenhum erro, apontando com êxito para o novo destino (observe o cabeçalho 'Local'):

HTTP/1.1 301 Moved Permanently
Server: nginx/1.2.0
Date: Sun, 29 Apr 2012 18:56:45 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: https://www.my-domain.com

É interessante notar que o traço é um caractere especial em expressões regulares e, como resultado, precisa ser escapado (por exemplo, \- ) quando usado em uma expressão regular. No seu bloco de servidor, no entanto, nem o seu server_name nem o seu destino de reescrita são regexes (embora seja possível que um server_name seja um regex).

Como um aparte, se você não estiver usando a captura, você pode simplificar sua reescrita para:

rewrite     ^ https://www.my-domain.com permanent;

É bastante provável que o seu redirecionamento tenha sido armazenado em cache pelo seu navegador (ele é um redirecionamento 'permanente', portanto, ele pode ser armazenado em cache pelos proxies do navegador / intermediário). Algumas sugestões para lidar com isso podem incluir:

  • Forçar uma atualização com: Ctrl + F5
  • Limpe o cache do navegador e reinicie o navegador
  • Use o modo de navegação privada
  • Verifique o cabeçalho "Localização" com suas ferramentas de desenvolvedor (por exemplo, o Firebug)
  • Limpe seu cache de DNS

Ao testar essas configurações, convém fazer uma alteração visível em cada modificação (por exemplo, www1 ou / test1 etc.) para verificar se você não está carregando o conteúdo em cache.

    
por 29.04.2012 / 22:03

Tags