Estou tentando configurar um redirecionamento 302 se alguém inserir o endereço IP, mas 301 todas as outras solicitações para o www.subdomínio desse domínio.
server {
listen 198.251.86.133:80;
server_name 198.251.86.133;
return 302 http://www.jacobdevans.com/anycast-301/;
}
server {
listen 198.251.86.133:80;
server_name _;
return 301 http://www.$host$request_uri;
}
Eu tenho o 301 funcionando, exceto se eu colocar a seção 302 acima, minha esperança é permitir que qualquer pessoa (não-https, desculpe) possa apontar seu domínio raiz de registro A para algum lugar fácil de fazer 301, exemplo.com para www .exemplo.com
Atualmente, tudo é capturado pela primeira opção de escuta
# curl -I jacobdevans.com
HTTP/1.1 302 Moved Temporarily
Server: nginx/1.6.3
Date: Mon, 28 Sep 2015 20:08:45 GMT
Content-Type: text/html
Content-Length: 160
Connection: keep-alive
Location: http://www.jacobdevans.com/anycast-301/
# curl -I 198.251.86.133
HTTP/1.1 302 Moved Temporarily
Server: nginx/1.6.3
Date: Mon, 28 Sep 2015 20:08:56 GMT
Content-Type: text/html
Content-Length: 160
Connection: keep-alive
Location: http://www.jacobdevans.com/anycast-301/
http://www.redirect-checker.orgretirarei da minha localização no Luxemburgo
Obrigado!
Responder1
Você precisaria ter um único bloco de servidor, pois ambos não serão lidos enquanto corresponderem à mesma diretiva de escuta.
Você deve ser capaz de modificar os blocos da seguinte maneira para obter os resultados desejados:
server {
listen 80;
server_name 198.251.86.133;
return 302 http://www.jacobdevans.com/anycast-301/;
}
server {
listen 80 default_server;
return 302 http://www.$host$request_uri;
}
Definir o default_server e permitir que esse bloco seja o 'catch all' enquanto define explicitamente o IP para corresponder ao cabeçalho HOST de entrada resultará no redirecionamento de todas as solicitações do IP direto http://www.jacobdevans.com/anycast-301/
e do restante para http://www.$host$request_uri
.
Responder2
Coloque entre aspas e agora está como esperado.
server {
listen 198.251.86.133:80;
server_name "198.251.86.133";
return 302 http://www.jacobdevans.com/anycast-301/;
}
server {
listen 198.251.86.133:80 default_server;
server_name _;
return 301 http://www.$host$request_uri;
}