Nginx 特定域名UA限制访问 - 无需if语句
以下是在nginx配置文件中通过使用map指令实现特定域名的ua只能带'qyuc'才能访问的代码,无需使用if语句,提高性能:
- 在http块中定义一个map,将需要限制的域名和与之对应的限制ua进行映射:
http {
map $http_host $limit_ua {
default ""; # 默认为空,不做限制
domain1.com 'qyuc'; # domain1.com 的ua只能为'qyuc'
domain2.com 'qyuc'; # domain2.com 的ua只能为'qyuc'
}
...
}
- 在server块的location中使用条件判断:
server {
...
location / {
if ($limit_ua != "" && $http_user_agent != $limit_ua) {
return 403; # 不符合限制,返回403
}
...
}
}
- 将以上代码复制到宝塔nginx配置文件中的http和server块对应位置即可。
注意事项:
- 使用map指令可以有效提高性能,避免使用if语句。
- 如果需要更高效的实现方式,可以考虑使用Lua脚本或者OpenResty。
原文地址: https://www.cveoy.top/t/topic/nwBS 著作权归作者所有。请勿转载和采集!