nginx:如何在没有主机:标头的情况下获取服务器?



我有一个特殊的服务器{}块,用于在主机标头中使用IP地址的人(server_name ~^[0-9]+.[0-9]+.[0-9]+.[0-9]+;(并且工作正常。当根本没有提供主机标头时,我想要一个不同的服务器块。我一直在测试:

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 _;(下划线而不是连字符(。

我的用例类似于域名停放站点,我希望处理很多主机名,并且所有合法的主机名都应该在数据库中查找,但我想尽早筛选某些非法主机名。

答案在文档中: https://nginx.org/en/docs/http/server_names.html
搜索单词"空">

修复:server_name "";

– 巴马

相关内容

最新更新