Mercurial > hg > nginx-site
diff xml/ru/docs/http/server_names.xml @ 2767:c56adb7148a4
Described more details about server selection.
In particular, this covers how the large_client_header_buffers (ticket #1523)
and underscores_in_headers (ticket #1987) directives work in virtual servers.
author | Yaroslav Zhuravlev <yar@nginx.com> |
---|---|
date | Tue, 13 Jul 2021 13:44:05 +0100 |
parents | 30e2bd353998 |
children | 3b5594157fab |
line wrap: on
line diff
--- a/xml/ru/docs/http/server_names.xml Tue Sep 07 18:28:11 2021 +0300 +++ b/xml/ru/docs/http/server_names.xml Tue Jul 13 13:44:05 2021 +0100 @@ -8,7 +8,7 @@ <article name="Имена сервера" link="/ru/docs/http/server_names.html" lang="ru" - rev="3" + rev="4" author="Игорь Сысоев" editor="Brian Mercer"> @@ -342,6 +342,93 @@ </section> +<section id="virtual_server_selection" + name="Выбор виртуального сервера"> + +<para> +Сначала соединение создаётся в контесте сервера по умолчанию. +Затем имя сервера может быть определено +на следующих стадиях обработки запроса, +каждая из которых участвует в выборе конфигурации: + +<list type="bullet"> + +<listitem> +<para> +предварительно во время операции SSL handshake согласно +<link doc="configuring_https_servers.xml" id="sni">SNI</link> +</para> +</listitem> + +<listitem> +<para> +после обработки строки запроса +</para> +</listitem> + +<listitem> +<para> +после обработки поля <literal>Host</literal> заголовка запроса +</para> +</listitem> + +<listitem> +<para> +если после обработки строки запроса или +поля <literal>Host</literal> заголовка запроса имя сервера не было выбрано, +то nginx будет использовать пустое имя в качестве имени сервера. +</para> +</listitem> + +</list> + +На каждой из этих стадий могут применяться различные конфигурации сервера. +Таким образом, некоторые директивы следует указывать с осторожностью: +<list type="bullet"> + +<listitem> +в случае использования +директивы <link doc="ngx_http_ssl_module.xml" id="ssl_protocols"/> +список протоколов задаётся библиотекой OpenSSL +перед применением конфигурации сервера согласно имени, +запрашиваемого через SNI. +Таким образом, протоколы должны быть заданы только для сервера по умолчанию; +</listitem> + +<listitem> +директивы +<link doc="ngx_http_core_module.xml" id="client_header_buffer_size"/> +и +<link doc="ngx_http_core_module.xml" id="merge_slashes"/> +задействуются перед чтением строки запроса, +таким образом они используют конфигурацию сервера по умолчанию или +конфигурацию сервера, выбранного через SNI; +</listitem> + +<listitem> +в случае использования директив +<link doc="ngx_http_core_module.xml" id="ignore_invalid_headers"/>, +<link doc="ngx_http_core_module.xml" id="large_client_header_buffers"/> +и +<link doc="ngx_http_core_module.xml" id="underscores_in_headers"/>, +которые участвуют в обработке полей заголовка запроса, +выбор сервера дополнительно зависит от того, +была ли обновлена конфигурация сервера +согласно строке запроса или полю заголовка <literal>Host</literal>; +</listitem> + +<listitem> +ошибочный ответ будет обработан с помощью +директивы <link doc="ngx_http_core_module.xml" id="error_page"/> +в том сервере, который в настоящий момент выполняет запрос. +</listitem> + +</list> +</para> + +</section> + + <section id="optimization" name="Оптимизация">