nginx 302 перенаправляет только голый IP
Я пытаюсь настроить перенаправление 302, если кто-то вводит IP-адрес, но отправляет все остальные запросы на 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, я надеюсь, что кто-то (не https, извините) сможет указать свой корневой домен записи A где-нибудь легко сделать 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/ вытащит из моего расположения в Люксембурге
Спасибо!
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;
}
Вам потребуется один серверный блок, так как оба не будут прочитаны, пока они соответствуют одной и той же директиве listen.
Вы должны быть в состоянии изменить блоки следующим образом, чтобы получить желаемые результаты:
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
,