nginx:如何在没有主机的情况下获取服务器:header?
nginx: how to get a server for the case of no Host: header?
我有一个特殊的服务器 {} 块,用于在主机 header (server_name ~^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+;
) 中使用 IP 地址的人,并且工作正常。当根本没有提供主机 header 时,我想要一个不同的服务器块。我一直在测试:
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 _;
(下划线不是连字符)。
我的用例类似于域名停放站点,我想处理很多主机名,所有合法的都应该在数据库中查找,但我想及早筛选某些非法的。
The answer is in the documentation: https://nginx.org/en/docs/http/server_names.html
Search for the word "empty"
Fix: server_name "";
– Barmar
我有一个特殊的服务器 {} 块,用于在主机 header (server_name ~^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+;
) 中使用 IP 地址的人,并且工作正常。当根本没有提供主机 header 时,我想要一个不同的服务器块。我一直在测试:
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 _;
(下划线不是连字符)。
我的用例类似于域名停放站点,我想处理很多主机名,所有合法的都应该在数据库中查找,但我想及早筛选某些非法的。
The answer is in the documentation: https://nginx.org/en/docs/http/server_names.html
Search for the word "empty"Fix:
server_name "";
– Barmar