Eu tenho um certificado SSL válido apenas para example.com (não é válido para subdomínios) e, portanto, quero redirecionar o link e link para link : //example.com usando nginx. Meu arquivo de configuração começa da seguinte maneira:
server {
# This should catch all non-HTTPS requests to example.com and *.example.com
listen 80;
server_name example.com www.example.com;
access_log off;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
# Actual server config starts here...
No entanto, o redirecionamento não funciona conforme desejado. Solicitar o link leva corretamente ao link , mas o link será redirecionado para o link que gera um erro SSL, pois meu certificado não é válido para subdomínios. Estou ciente de que não há possibilidade de redirecionamento de HTTPS inválido para HTTPS válido, mas pelo menos desejo alcançar um redirecionamento de HTTP para HTTPS, pois os usuários ainda tendem a digitar www. no navegador.
Quando eu wget --spider www.example.com
, ele retorna o resultado correto:
Spider mode enabled. Check if remote file exists.
--2015-03-19 02:22:47-- http://www.example.com/
Resolving www.example.com (www.example.com)... ***.***.***.***
Connecting to www.example.com (www.example.com) **** connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://example.com/ [following]
Spider mode enabled. Check if remote file exists.
--2015-03-19 02:22:47-- https://example.com/
...
Mas, por algum motivo, os navegadores solicitam o link em vez do link . Eu já tentei de vários navegadores e computadores. Onde está o meu erro? Todo o primeiro bloco de servidor no arquivo de configuração parece ser completamente ignorado - se eu deletá-lo, o navegador mostra exatamente o mesmo comportamento (com o cache DNS desabilitado), enquanto a saída de wget --spider
muda consistentemente.