<HTML><BODY>Вот в той документации-то я как-раз и запутался.<br>Спасибо. Вопросов нет.<br><br><br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
Понедельник, 20 ноября 2017, 17:24 +03:00 от Maxim Dounin <mdounin@mdounin.ru>:<br>
<br>
<div id="">
<div class="js-helper js-readmsg-msg">
<style type="text/css"></style>
<div>
<base target="_self" href="https://e.mail.ru/">
<div id="style_15111878990000000158_BODY">Hello!<br>
<br>
On Mon, Nov 20, 2017 at 04:43:05PM +0300, CoDDoC wrote:<br>
<br>
> Ладно, с этим разберусь.<br>
> Еще толику Вашего времени... Не совсем в тему, но почти. О выборе секции server для обработки запроса.<br>
> <br>
> Я слегка запутался, что от чего зависит: $host от $server_name или наоборот?<br>
> Вот как я это понимаю.<br>
> <br>
> 1. Сначала неправильный запрос:<br>
> echo -e 'HEAD <a href="http://www.other-domain.com/some-path" target="_blank">http://www.other-domain.com/some-path</a> HTTP/1.1\n''host:www.my-domain.com\n''user-agent:NCAT-TEST\n'| ncat <a href="http://www.my-domain.com" target="_blank">www.my-domain.com</a> 80<br>
> Как все происходит (ИМХО):<br>
> 1.1. Получаем значение $host из строки запроса: $host = <a href="http://www.other-domain.com" target="_blank">www.other-domain.com</a><br>
> На заголовок ($http_host = <a href="http://www.my-domain.com" target="_blank">www.my-domain.com</a>) в данном случае не смотрим.<br>
> 1.2. Ищем секцию, соответствующую значению $host для заданного порта (80)<br>
> 1.3. Такой секции не существует, запрос передается в дефолтовую, и получаем $server_name = _<br>
> <br>
> ----------------------------------------------------<br>
> 2. Теперь правильный запрос:<br>
> echo -e 'HEAD / HTTP/1.1\n''host:www.my-domain.com\n''user-agent:NCAT-TEST\n'| ncat <a href="http://www.my-domain.com" target="_blank">www.my-domain.com</a> 80<br>
> 2.1. В строке запроса хоста нет, берем из заголовка ($http_host = <a href="http://www.my-domain.com" target="_blank">www.my-domain.com</a>).<br>
> Получаем значение $host из $http_host: $host= <a href="http://www.my-domain.com" target="_blank">www.my-domain.com</a><br>
> 2.2. Ищем секцию, соответствующую значению $host для заданного порта (80)<br>
> 2.3. Передаем в нее запрос и получаем $server_name = <a href="http://www.my-domain.com" target="_blank">www.my-domain.com</a><br>
> <br>
> ----------------------------------------------------<br>
> 3. Опять неправильный запрос с пустым $http_host:<br>
> echo -e 'HEAD / HTTP/1.1\n''host:\n''user-agent:NCAT-TEST\n'| ncat <a href="http://www.my-domain.com" target="_blank">www.my-domain.com</a> 80<br>
> 3.1. Значения $host = '' и $http_host = ''<br>
> 3.2. Ищем секцию, соответствующую значению $host для заданного порта (80)<br>
> 3.3. Такой секции не существует, запрос передается в дефолтовую, и получаем $server_name = _<br>
> 3.4. $host получает значение $server_name, т.е. $host = _<br>
> Т.е., в отличие от примера 2, не $server_name получаем из $host, а $host из $server_name<br>
> <br>
> Я верно понимаю алгоритм?<br>
<br>
Да, как-то так. Если в строке запроса используется полный адрес, <br>
то $host берётся оттуда. Иначе - из заголовка Host. Если <br>
заголовок Host отсутствует или пустой - будет использовано имя <br>
сервера, которое также доступно в переменной $server_name.<br>
<br>
Документация тут:<br>
<br>
<a href="http://nginx.org/ru/docs/http/ngx_http_core_module.html#var_host" target="_blank">http://nginx.org/ru/docs/http/ngx_http_core_module.html#var_host</a><br>
<a href="http://nginx.org/ru/docs/http/ngx_http_core_module.html#server_name" target="_blank">http://nginx.org/ru/docs/http/ngx_http_core_module.html#server_name</a><br>
<br>
-- <br>
Maxim Dounin<br>
<a href="http://mdounin.ru/" target="_blank">http://mdounin.ru/</a><br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br data-mce-bogus="1"></div>
<base target="_self" href="https://e.mail.ru/">
</div>
</div>
</div>
</blockquote>
<br>
<br>--<br></BODY></HTML>