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.