抱歉,我的回答可能没有满足您的需求。根据您所述的条件,您希望在 Nginx 中判断请求的 Host 字段,如果不等于 10.19.29.110:7070
并且不等于 127.0.0.1:7070
时返回403 Forbidden。
可以使用 Nginx 的 map
指令来实现这一逻辑,这样会更简洁和有效。以下是一个示例配置:
http {
map $http_host $allowed {
default 0; # 默认值为 0,表示拒绝访问
"10.19.29.110:7070" 1; # 如果匹配,则设置为 1
"127.0.0.1:7070" 1; # 如果匹配,则设置为 1
}
server {
listen 7070;
location / {
if ($allowed = 0) {
return 403; # 返回403 Forbidden
}
# 正常处理请求
proxy_pass http://your_backend_server;
}
}
}
配置说明:
- map:首先定义了一个映射
$allowed
,如果 Host 匹配指定值则设为1
,否则默认为0
。 - if:在 location 中检查
$allowed
的值。如果是0
(即不匹配任何允许的 Host),则返回403 Forbidden。
请记得根据实际情况调整 proxy_pass
的地址。这种方式避免了对多个 if 条件的重复判断,更加高效和易读。
如果还有其他问题或者需要进一步帮助,请告诉我!
内容由零声教学AI助手提供,问题来源于学员提问