如何使用没有"Host"标头字段的请求测试服务器



我有一台服务器正在使用Nginx的444来断开与未定义主机的连接:

server {
listen      80;
server_name "";
return      444; 
}

但是我不知道如何测试它是否有效。

以下是我尝试过的几件事,在黑暗中刺伤:

$ curl -I mysite.com --header 'Host: ""'
HTTP/1.1 301 Moved Permanently
$ curl -I mysite.com --header ''
HTTP/1.1 301 Moved Permanently

我想得到那个444!

这是我的nginxmysite.conf文件的相关部分

server {
listen 80;
server_name "";
return 444;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
}

因此,要么我测试错误,要么我正确测试它,但丢失的主机标头仍然被我的第二个服务器块捕获并重定向。

这适用于 curl 7.47:

curl -I --header Host: mysite.com

请注意,标头选项的参数只是Host:('Host: ''Host: ""'不起作用(

最新版本的 curl 可能有一个--http0.9选项,可能会得到相同的结果,但我没有测试它。

最新更新