nginx 302 redireciona apenas IP nu

nginx 302 redireciona apenas IP nu

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;
}

informação relacionada