针对在主机头中使用IP地址的人(server_name ~^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+;
),我有一个特殊的服务器{}块,这很好用。我想为没有提供任何主机头的情况下使用不同的服务器块。我一直在测试:
telnet localhost 80
GET /foobar HTTP/1.0
根据我的日志记录(日志格式中包含"$http_host"
),我发现这显示为"-"
(连字符而非下划线)。但是这个服务器块:
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 _;
(下划线而非连字符)。
我的用例类似于域名停放网站,我希望处理许多主机名,并且所有合法的主机名都应在数据库中查找,但我希望尽早筛选某些非法主机名。
^-*$
中的-*
之前,我曾经有过那个问题。 - Cupcake Protocolserver_name "";
- Barmar