nginx 302 redireciona somente IP nus

1

Estou tentando configurar um redirecionamento 302 se alguém inserir o endereço IP, mas 301 todas as outras solicitações para o domínio www.subdomain 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 um (não-https, desculpe) possa apontar seu domínio raiz de registro em algum lugar fácil de fazer 301, exemplo. com para www.example.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/

link sairá da minha localização no luxemburgo

Obrigado!

    
por Jacob Evans 28.09.2015 / 21:59

2 respostas

0

Coloque entre aspas e agora é 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;
}
    
por 28.09.2015 / 22:27
0

Você precisaria ter um único bloco de servidor, pois ambos não serão lidos enquanto eles corresponderem à mesma diretiva de escuta.

Você deve poder 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 'capturar tudo' enquanto define explicitamente o IP para corresponder ao cabeçalho HOST de entrada resultará em todas as solicitações para o IP direto redirecionado para http://www.jacobdevans.com/anycast-301/ e o restante para http://www.$host$request_uri .

    
por 28.09.2015 / 22:32