对于在主机头(server_name ~^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+;
中使用IP地址的用户)来说,我有一个特殊的服务器{}块,并且可以正常工作。当根本没有提供主机头时,我想要一个不同的服务器块。我一直在测试:
telnet localhost 80
GET /foobar HTTP/1.0
我从我的日志记录(log_format中有"$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 _;
(下划线不是连字符)的默认值。
我的用例类似于域名停放站点,我想处理很多主机名,所有合法的主机名都应在数据库中查找,但我想尽早筛选某些非法主机。
答案 0 :(得分:1)
答案在文档中:https://nginx.org/en/docs/http/server_names.html
搜索单词“空”修复::
server_name "";
– Barmar