Nginx 域名特定 UA 访问限制配置 (无 if 语句)
可以使用 map 指令和 $http_user_agent 变量来实现对特定域名访问的 UA 限制,避免使用 if 语句带来的性能和安全问题。具体步骤如下:
- 在 http 块中定义一个 map,将需要限制 UA 的域名映射为 1,其他域名映射为 0。
http {
map $host $limit_ua {
default 0;
example.com 1;
}
}
- 在 server 块中使用 if 指令判断 $limit_ua 变量是否为 1,如果是则检查 $http_user_agent 变量是否符合要求,否则直接返回 403。
server {
listen 80;
server_name example.com www.example.com;
if ($limit_ua) {
if ($http_user_agent !~ 'allowed_user_agent') {
return 403;
}
}
# 其他配置
}
注意:虽然这里使用了 if 指令,但是只有在 map 指令中定义的变量才会触发 if 指令,因此不会有性能问题。同时,这种方式也避免了使用 if 指令可能带来的安全问题。
原文地址: http://www.cveoy.top/t/topic/nUSh 著作权归作者所有。请勿转载和采集!