如何配置 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)