我想阻止不需要的Bots访问服务器上的网站。
当检测到某个Bot时,nginx可以立即丢弃/终止连接吗?
if ($http_user_agent ~ (agent1|agent2) ) {
**KILL CONNECTION**;
}
上面的例子。
答案 0 :(得分:29)
使用return 444; This non-standard status code of 444 causes nginx to simply close the connection without responding to it
if ($http_user_agent ~ (agent1|agent2) ) {
return 444;
}
答案 1 :(得分:0)
是的,它可以。请参阅下面的问题 - 这是基于代理字符串重定向,但您可以随心所欲地做任何事情(错误页面或其他)。
Nginx proxy or rewrite depending on user agent
然而,请注意 - 一个体面的僵尸程序会伪造其用户代理字符串看起来就像普通浏览器一样,所以这绝不是阻止机器人清扫网站的有力方法。
答案 2 :(得分:-1)
server {
listen 8443 default ssl;
error_page 404 403 = 444; #disconnect if 404 or 403
root /srv/empty; #Empty forder
...
...
location /summary_report{
root /srv/www;
index index.html index.htm;
}
}
https://127.0.0.1/断开连接。
https://127.0.0.1/summary_report不要断开连接。