Re[2]: Непонятки с ответом 400

CoDDoC coddoc на mail.ru
Пн Ноя 20 14:46:35 UTC 2017


Вот в той документации-то я как-раз и запутался.
Спасибо. Вопросов нет.


>Понедельник, 20 ноября 2017, 17:24 +03:00 от Maxim Dounin <mdounin на mdounin.ru>:
>
>Hello!
>
>On Mon, Nov 20, 2017 at 04:43:05PM +0300, CoDDoC wrote:
>
>> Ладно, с этим разберусь.
>> Еще толику Вашего времени... Не совсем в тему, но почти. О выборе секции server для обработки запроса.
>> 
>> Я слегка запутался, что от чего зависит: $host от $server_name или наоборот?
>> Вот как я это понимаю.
>> 
>> 1. Сначала неправильный запрос:
>> echo -e 'HEAD  http://www.other-domain.com/some-path HTTP/1.1\n''host:www.my-domain.com\n''user-agent:NCAT-TEST\n'| ncat  www.my-domain.com 80
>> Как все происходит (ИМХО):
>> 1.1. Получаем значение $host из строки запроса: $host =  www.other-domain.com
>> На заголовок ($http_host =  www.my-domain.com ) в данном случае не смотрим.
>> 1.2. Ищем секцию, соответствующую значению $host для заданного порта (80)
>> 1.3. Такой секции не существует, запрос передается в дефолтовую, и получаем $server_name = _
>> 
>> ----------------------------------------------------
>> 2. Теперь правильный запрос:
>> echo -e 'HEAD / HTTP/1.1\n''host:www.my-domain.com\n''user-agent:NCAT-TEST\n'| ncat  www.my-domain.com 80
>> 2.1. В строке запроса хоста нет, берем из заголовка ($http_host =  www.my-domain.com ).
>> Получаем значение $host из $http_host: $host=  www.my-domain.com
>> 2.2. Ищем секцию, соответствующую значению $host для заданного порта (80)
>> 2.3. Передаем в нее запрос и получаем $server_name =  www.my-domain.com
>> 
>> ----------------------------------------------------
>> 3. Опять неправильный запрос с пустым $http_host:
>> echo -e 'HEAD / HTTP/1.1\n''host:\n''user-agent:NCAT-TEST\n'| ncat  www.my-domain.com 80
>> 3.1. Значения $host = '' и $http_host = ''
>> 3.2. Ищем секцию, соответствующую значению $host для заданного порта (80)
>> 3.3. Такой секции не существует, запрос передается в дефолтовую, и получаем $server_name = _
>> 3.4. $host получает значение $server_name, т.е. $host = _
>> Т.е., в отличие от примера 2, не $server_name получаем из $host, а $host из $server_name
>> 
>> Я верно понимаю алгоритм?
>
>Да, как-то так.  Если в строке запроса используется полный адрес, 
>то $host берётся оттуда.  Иначе - из заголовка Host.  Если 
>заголовок Host отсутствует или пустой - будет использовано имя 
>сервера, которое также доступно в переменной $server_name.
>
>Документация тут:
>
>http://nginx.org/ru/docs/http/ngx_http_core_module.html#var_host
>http://nginx.org/ru/docs/http/ngx_http_core_module.html#server_name
>
>-- 
>Maxim Dounin
>http://mdounin.ru/
>_______________________________________________
>nginx-ru mailing list
>nginx-ru на nginx.org
>http://mailman.nginx.org/mailman/listinfo/nginx-ru


--
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20171120/7fb741a1/attachment-0001.html>


Подробная информация о списке рассылки nginx-ru