一、A 服务器增加一个 default.conf 禁止 Nginx conf 未绑定的域名。
server {
listen 80 default_server;
server_name _;
return 444;
}
二、其他服务器代理的时候,如果是 proxy_pass 用的是服务器 IP,那么必须指定正确的 A 服务器域名作为 host 头,比如你 IP 是 1.2.3.4,域名是
a.com ,你可以这么配置:
proxy_pass
http://a.com/;或者这么配置:
proxy_pass http://1.2.3.4/;
proxy_set_header Host "
a.com";
总之,Host 要正确,用域名的时候自动加了 host 头所以不用手动指定,用 IP 的时候就必须要手动指定。用域名也有一个地方要注意,服务器要能解析到正确的 IP,所以如果上游服务器是自己的一般还是用 IP 然后指定 host 头。
三、通过指定 default_server 可以解决其他域名恶意解析到 A 服务器的问题。
至于其他服务器恶意反代你 A 域名的问题,只要你 A 域名提供公开访问,那就没办法通过配置禁止反代,因为反代能配置得跟真实用户一样。
如果有人一心要反代你的网站,你只能跟他们斗智斗勇,经常更新反制措施来加大他们的反代成本。
举几个例子:
1、你把反代 IP 抓出来屏蔽,那对方得上代理或者拨号 VPS。
2、你通过 JS 判断域名跳转,那对方得加 filter 修改你的代码。
3、你隐藏关键内容要求用户输入验证码,那对方还得反代验证码。