Ну, хорошо. Пусть в моем примере вообще нет хоста. Тогда что такое https://test.com ? Давайте назовем строкой запроса, суть проблемы от этого не меняется. В документации так: " $host в порядке приоритета: имя хоста из строки запроса, или имя хоста из поля “Host” заголовка запроса.....,"
Объясните мне, пожалуйста, что понимать как "имя хоста из строки запроса" и "имя хоста из поля “Host” заголовка запроса". Желательно с примером для курла, как особо одаренному. Далее, Вы приводите пример с netcat. Аналогично можно использовать telnet. Только ведь после получения Location ему нужно следовать. Полученный Location: http://nginx.org/ куда возвращает? На HEAD http://nginx.org/ HTTP/1.1. То же самое, только не вводить построчно: curl -ILH 'Host: www.nginx.org' https://nginx.org/ И точно такое же зацикливание. Пусть мои примеры неверны. Но работают, и приводят к зацикливанию при псевдо-валидном запросе. По большому счету, меня интересует только, как это побороть. >Понедельник, 7 августа 2017, 13:37 +03:00 от Валентин Бартенев ><vb...@nginx.com>: > >On Monday 07 August 2017 13:25:32 Валентин Бартенев wrote: >> On Monday 07 August 2017 09:01:39 CoDDoC wrote: >> > >> > Спасибо. >> > >> > Только Вы говорите об URI "/", а вопрос был об URL, точнее - о >> > зацикливании, связанном с неправильной (ИМХО) интерпретацией в ngx >> > переменной $host. Как она ДОЛЖНА обрабатываться - сказано в доке, что >> > имеем ПО ФАКТУ - в моем примере. >> >> Ещё раз. Вы неправильно интерпретируете команду curl, отсюда и считаете, >> что поведение nginx отличается от описанного в документации. Ваш пример >> неверен. >> >> И далее на этом неверном предположении строите все остальные выводы. >> >> Вы пишите: >> >> | Вот такой случай: >> | curl -ILH 'Host: www.test.com ' https://test.com >> | >> | Если бы переменная $host получила значение в порядке приоритета, оно было >> бы test.com (имя хоста из строки запроса). >> >> Нет не было бы. Потому что в строке запроса, которую отправляет данная >> команда curl нет "test.com". Там нет вообще хоста. >> >[..] > > >Вот наглядный пример, всё работает как описано >в документации и должно быть по RFC: > > >% netcat nginx.org 80 >HEAD http://nginx.org/ HTTP/1.1 >Host: www.nginx.org > >HTTP/1.1 200 OK >Server: nginx/1.13.3 >Date: Mon, 07 Aug 2017 10:34:37 GMT >Content-Type: text/html; charset=utf-8 >Content-Length: 6680 >Last-Modified: Tue, 11 Jul 2017 15:45:07 GMT >Connection: keep-alive >Keep-Alive: timeout=15 >ETag: "5964f283-1a18" >Accept-Ranges: bytes > >HEAD / HTTP/1.1 >Host: www.nginx.org > >HTTP/1.1 301 Moved Permanently >Server: nginx/1.13.3 >Date: Mon, 07 Aug 2017 10:34:53 GMT >Content-Type: text/html >Content-Length: 185 >Connection: keep-alive >Keep-Alive: timeout=15 >Location: http://nginx.org/ > >_______________________________________________ >nginx-ru mailing list >nginx-ru@nginx.org >http://mailman.nginx.org/mailman/listinfo/nginx-ru
_______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru