Opened 11 years ago
Closed 11 years ago
#441 closed defect (invalid)
"Как предотвратить обработку запросов без имени сервера" - не работает
Reported by: | openid.yandex.ru/Iremel36 | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | nginx-module | Version: | 1.3.x |
Keywords: | return, server_name | Cc: | |
uname -a: | Linux web-test 3.0.13-0.27-default #1 SMP Wed Feb 15 13:33:49 UTC 2012 (d73692b) x86_64 x86_64 x86_64 GNU/Linux | ||
nginx -V: |
nginx version: nginx/1.4.1
built by gcc 4.3.4 [gcc-4_3-branch revision 152973] (SUSE Linux) configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-pcre=../pcre-8.32 --with-zlib=../zlib-1.2.8 --with-http_gzip_static_module --with-http_stub_status_module --with-http_gunzip_module --without-http_autoindex_module --without-http_ssi_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_sub_module |
Description
В документации http://nginx.org/ru/docs/http/request_processing.html есть:
===========
Если запросы без поля “Host” в заголовке не должны обрабатываться, можно определить сервер, который будет их отклонять:
server { listen 80; server_name ""; return 444; # error_page 400 /400.html; } server { ...
===========
Данная конструкция работает только для "левых" Host, а для пустого Host возвращается ошибка 400.
Замена страницы "error_page 400 /400.html;" вместо return 444 работает нормально.
Note:
See TracTickets
for help on using tickets.
Цитата из RFC 2616:
С точки зрения протокола HTTP/1.1 такие запросы не являются корректными запросами, и сервер сразу же возвращает 400, не пытаясь обрабатывать некорректный запрос.
В документации речь шла о HTTP/1.0 и HTTP/0.9 запросах без заголовка Host. Такие запросы допустимы и обрабатываются сервером.