配置文件如下:
http { map $http_user_agent $is_allowed_user_agent { default 0; "~*Chrome/101.0.4951.64" 1; } server { listen 9999; server_name your_domain.com; location / { if ($is_allowed_user_agent = 0) { return 403; } # 允许指定 User-Agent 访问的配置 } } }
-
http
块:在 NGINX 配置文件中,http
块用于配置全局的参数和指令,适用于整个 HTTP 服务器。在这个示例中,我们定义了一个名为$is_allowed_user_agent
的变量,用于判断请求的 User-Agent 是否符合要求。 -
map
指令:map
指令用于创建一个变量映射表,将$http_user_agent
变量(即请求中的 User-Agent 头信息)的值映射到$is_allowed_user_agent
变量。如果请求的 User-Agent 匹配Chrome/101.0.4951.64
,则将$is_allowed_user_agent
设置为 1;否则设为 0。 -
server
块:每个server
块定义了一个虚拟主机配置。在这个示例中,我们监听端口9999
,并设置了一个虚拟主机,其域名为your_domain.com
。 -
location /
:这是一个常见的 NGINXlocation
块,用于匹配请求的 URI。在这里,我们对所有请求都进行处理。在location /
块内部,我们使用if
指令来检查$is_allowed_user_agent
变量的值。如果值为 0(即 User-Agent 不符合要求),则返回 HTTP 状态码403 Forbidden
,拒绝访问;否则,继续执行后续配置。 -
# 允许指定 User-Agent 访问的配置
:这里可以添加允许特定 User-Agent 访问的配置内容,例如代理到特定的后端服务器、返回特定的响应等。