让 nginx 拒绝除特定 IP 之外的所有浏览器请求

让 nginx 拒绝除特定 IP 之外的所有浏览器请求

如何配置 nginx 以拒绝除特定 IP 之外的所有浏览器请求?

nginx 必须仅服务非浏览器请求和来自特定 IP 的浏览器请求

答案1

map $remote_addr $whitelist {
    default                     1;
    ~^(192.168.123.*)$          0;
}

[...]

location / {
    if ($whitelist) { return 404; }
}

:: 在映射中,如果 $remote_addr 与第二行匹配,则变量 $whitelist 将变为 0,否则为 1

:: 在位置中,如果变量 $whitelist 等于 1 或更高,则客户端将被拒绝访问并出现 404(在这种情况下,当与示例 ip 通配符不匹配时为 1,当允许访问时为零)

使用用户代理执行此操作:

map $http_user_agent $whitelist {
    default              0;
    ~*Unknown.*Client    1;
}

:: 注意反转的结果值(0 和 1)

相关内容