可以使用 map 模块和 geo 模块来实现限制特定 UA 访问某个域名的功能,而不使用 if 语句。

  1. 首先,在 nginx 配置文件中定义一个 map 变量,用于存储允许访问的 UA 列表:
map $http_user_agent $allowed_ua {
    default 0;
    ~^Mozilla/5.0 \(Windows NT 10.0; Win64; x64\) AppleWebKit/537.36 \(KHTML, like Gecko\) Chrome/83.0.4103.116 Safari/537.36$ 1;
    # 允许访问的 UA 列表,可以根据实际情况添加
}
  1. 然后,使用 geo 模块定义一个变量,用于存储允许访问的 IP 地址段:
geo $allowed_ip {
    default 0;
    192.168.0.0/16 1;
    # 允许访问的 IP 地址段列表,可以根据实际情况添加
}
  1. 接下来,在 server 块中使用 if 语句检查 UA 和 IP 地址是否符合要求,如果不符合就返回 403 错误:
server {
    listen 80;
    server_name example.com;

    if ($allowed_ua = 0) {
        return 403;
    }

    if ($allowed_ip = 0) {
        return 403;
    }

    # 其他配置
}
  1. 最后,重启 nginx 服务并测试是否生效。

注意:尽量不要使用 if 语句,因为 if 语句会影响 nginx 的性能。以上配置只是为了说明如何不使用 if 语句实现限制特定 UA 访问某个域名的功能,实际应用中还需要考虑其他因素,如 SSL 证书、反向代理等。

Nginx 限制特定 UA 访问域名:无需 if 语句

原文地址: http://www.cveoy.top/t/topic/nURS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录