перенаправление nginx 302 только явный IP

Я пытаюсь установить 302 перенаправления, если кто-то вводит IP-адрес, но 301 весь другой запрос к www.subdomain того домена.

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

У меня есть 301 работа, кроме того, если бы я поместил эти 302 раздела выше в, то моя надежда состоит в том, чтобы позволить любому (non-https, извините) мочь указать на их рекордный корневой домен, где-нибудь легкий сделать 301, example.com на www.example.com

В настоящее время все поймано первым, слушают опция

# 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.org вытянет от моего люксембургского района

Спасибо!

1
задан 28 September 2015 в 23:11
2 ответа

Поместите это в кавычки, и теперь все соответствует ожиданиям.

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;
}
0
ответ дан 4 December 2019 в 07:06

Вам понадобится один серверный блок, поскольку оба не будут прочитаны, пока они соответствуют одной и той же директиве прослушивания.

Вы должны иметь возможность изменять блоки следующим образом, чтобы достичь желаемого результаты:

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

Установка default_server и разрешение этому блоку быть «улавливающим всех» при явном определении IP для соответствия входящему заголовку HOST приведет к тому, что все запросы для прямого IP будут перенаправлены на http: // www .jacobdevans.com / anycast-301 / , а остальные - на http: //www.$host$request_uri .

0
ответ дан 4 December 2019 в 07:06

Теги

Похожие вопросы