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

时间:2018-08-30 00:15:34

标签: nginx http-headers nginx-config

对于在主机头(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 _;(下划线不是连字符)的默认值。

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

1 个答案:

答案 0 :(得分:1)

  

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

     

修复:server_name "";

     

Barmar