Nginx 如何封锁 User Agent

天天垃圾机器人来扫,讨厌死了!统统封掉吧!

方法

使用 Nginx 的 map 功能把所有不喜欢的机器人 User Agent 统统封锁掉!

在计算机科学中,用户代理(英语:User Agent)指的是代表使用者行为的软件(软件代理程序)所提供的对自己的一个标识符。例如,一个电子邮件阅读器就是一个电子邮件客户端,而在会话发起协议 (SIP) 中,用户代理的术语指代的是一个通信会话的所有两个终端。

用户代理 – 维基百科

bad_bot.conf

map $http_user_agent $bad_bot {
    default 0;
    ~*^Lynx 0; # Let Lynx go through
    libwww-perl                      1;
    ~(?i)(httrack|htmlparser|libwww) 1;
    "~Java"		1;
    "~PHP\/\d"		1;
    "~Transmission"	1;
}

~ 是正则表达式的区分大小写

~* 是不区分大小写

Java 来扫个屁啊,PHP 你也来扫个屁。统统 403 掉。

example.com.conf

server {
    listen 80;
    server_name example.com;
    ...


    # 有问题的 bot 就返回 HTTP 403 错误代码
    if ($bad_bot) {
        return 403;
    }


    ....
}

扩展阅读

  1. HowTo: Nginx Block User Agent
  2. Module ngx_http_map_module

Published by

Galovia

九十度博客站长。