今天太倒霉了,发现通过IP无法访问服务器的80端口很无语,昨天都还好的啊,也没有修改过配置,其他端口又是正常的,防火墙也没问题。于是问了下机房,给了个崩溃的回复说我们的服务器有个域名没有备案被电信多次通告,然后就把我们ip端口给封了。。。。封了啊。。。疯了,关键是这个域名TMD不是我的啊
经过一番折腾,发现是 nginx 配置上貌似有个漏洞,导致任何域名解析到服务器都能被正常请求,虽然是个空白页,但HTTP状态码是200。
主要是缺少下面的配置代码:nginx 版本 1.8.0
server {
listen 80 default_server;
server_name _;
return 403;
}
让所有没有配置过的 server_name 都返回 403 错误
我以前 Nginx 也重未加过这个配置,但重来没遇到过此类问题,而且我在另一台服务器上测试,即便没有这个代码也不可能解析并请求成功啊,很是无语。
补充:
搜索了一圈后发现 Nginx 对这类问题,貌似应该用自身特有的 444 这个状态码最好
server {
listen 80 default_server;
server_name _;
access_log off;
return 444;
}
这样在浏览器端访问的时候,浏览器会自动提示用户无法访问
通过 CURL 抓取的结果(输出的是HTTP错误信息)