查看百度统计的入口页面,发现有个奇怪的域名。

使用 nginx 防止域名恶意解析_反向代理

好家伙,直接解析到了我的网站上,同时发现直接输入 ip 也能访问博客。受不了,于是着手处理。

开始想到使用 nginx 的 default_server。

server {
listen 80 default_server;
server_name _;
return 444;
}

但是我的服务器这样配置不知道为什么不生效,如果 server_name 设置为 ip 就能匹配到,我觉得原因肯定就是没有匹配到。

突然想到 server_name 如果能匹配所有的字符,那么不管 ip 还是外部域名不就都会被拦截了吗?反正域名精确匹配优先,匹配到就直接进行反向代理了,没有配置的域名或者 ip 都走这个默认配置。

server {
listen 80 default_server;
server_name ~.*$;
return 444;
}

这样配置以后,发现 http 确实都不能访问,但是 https 还是可以访问的,此时需要这样配置就可以解决。

server {
listen 443 default_server;
server_name ~.*$;
ssl on;
ssl_certificate /etc/nginx/conf.d/cert/caoaman.cn.cer;
ssl_certificate_key /etc/nginx/conf.d/cert/caoaman.cn.key;
return 444
}
server {
listen 80 default_server;
server_name ~.*$;
return 444;
}

使用 nginx 防止域名恶意解析_反向代理_02