У меня есть специальный блок server {} для людей, которые используют IP-адрес в заголовке хоста (server_name ~^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+;
), и это прекрасно работает. Я хотел бы другой блок сервера для одного, когда заголовок хоста вообще не предоставляется. Я тестировал с:
telnet localhost 80
GET /foobar HTTP/1.0
И я вижу из своей регистрации (которая имеет "$http_host"
в log_format) это проявляется как "-"
(дефис не подчеркивается). Но этот блок сервера:
server {
listen 80;
listen [::]:80;
# hyphen not underscore
server_name ~^-*$;
root /var/www/no-host;
default_type text/plain;
index foo.ey
location / {
try_files $uri /foo.ey;
}
}
Никогда не используется, вместо этого запрос переходит к значению по умолчанию, которое имеет server_name _;
(подчеркивание не дефис).
Мой пример использования аналогичен сайту парковки домена, я хочу, чтобы многие имена хостов обрабатывались, и все допустимые имена следует искать в базе данных, но я хочу проверять некоторые незаконные имена на ранних этапах.