Вот в той документации-то я как-раз и запутался. Спасибо. Вопросов нет.
>Понедельник, 20 ноября 2017, 17:24 +03:00 от Maxim Dounin <[email protected]>: > >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 >[email protected] >http://mailman.nginx.org/mailman/listinfo/nginx-ru --
_______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
