Ладно, с этим разберусь. Еще толику Вашего времени... Не совсем в тему, но почти. О выборе секции 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 Я верно понимаю алгоритм? >Понедельник, 20 ноября 2017, 16:24 +03:00 от Maxim Dounin <[email protected]>: > >Hello! > >On Mon, Nov 20, 2017 at 03:43:16PM +0300, CoDDoC wrote: > >> Это я понял. Бот дернул запрос и быстро сбежал, чтобы не попасть в бан. >> Однако-же попал :) >> Как мне эмулировать такую ситуацию? > >Я, вроде бы, вполне однозначно написал: > >> > Если клиент закрыл соединение, не прислав запрос полностью - >> > то ... > >Так и эмулировать - закрывать соединение, не прислав запрос >полностью. > >[...] > >-- >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
