![如何配置nginx VHost以最粗鲁的方式挂断客户端?](https://linux22.com/image/662435/%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AEnginx%20VHost%E4%BB%A5%E6%9C%80%E7%B2%97%E9%B2%81%E7%9A%84%E6%96%B9%E5%BC%8F%E6%8C%82%E6%96%AD%E5%AE%A2%E6%88%B7%E7%AB%AF%EF%BC%9F.png)
我在 nginx 服务器上配置了一个(我们称之为“旧版”的)VHost。它曾经是一个完整的网站,但后来被停用,所有内容都被删除了。该server
块现在看起来像这样:
server {
listen 80;
server_name defunct-site.com;
return 410;
}
一些不受我控制的 DNS 记录和应用程序仍然指向该服务器,尽管我恳求第三方更新其配置并停止尝试访问该网站,但它仍然获得了相对较大的流量。不用说,我不能不付出大量毫无意义的努力就更改我的 IP 地址。
有没有更强有力的方式来告诉这些客户端他们的流量不再受欢迎?源 IP 到处都是,因此成功执行 iptables 阻止似乎不太可能。而且我需要读取足够多的 HTTP 请求才能到达标头,Host:
以确保我不会破坏用于合法 VHost 的流量。
答案1
410 Gone 是针对不再存在且已知永远不会返回的内容返回的典型错误。特别是,它还会告知搜索引擎这一点,以便他们可以降低此类 URL 的排名或将其从列表中删除。
您可以做的另一件事是提供一个页面error_document
,向访问该网站的人解释发生了什么。如果没有它,他们只会看到一个毫无意义的“410 Gone”。例如:
error_document 410 /410.html;
这只是一个静态 HTML 文档,其中包含任何您想要的内容,您可以随心所欲地进行操作。
<html>
<head><title>Gone</title></head>
<body>
<h1>Go away</h1>
<p>You aren't supposed to be here. This is Initech's fault, yell at
John Doe on +1 212 555-1234.</p>
</body>
</html>