你可以在 Nginx 的配置文件中使用 map
和 if
指令来实现这个功能。以下是一个示例配置,判断请求中的 Host 字段,如果不等于 10.19.29.110:7070
并且不等于 127.0.0.1:7070
,则返回 403 状态码。
http {
# 定义变量,根据 Host 字段的值设置不同的状态
map $host $blocked {
default 1; # 默认阻止
"10.19.29.110:7070" 0; # 放行
"127.0.0.1:7070" 0; # 放行
}
server {
listen 7070;
location / {
if ($blocked) {
return 403; # 返回403 Forbidden
}
# 其他处理逻辑,例如代理或静态文件服务
proxy_pass http://your_backend;
}
}
}
配置说明:
- 使用
map
指令创建了一个$blocked
变量,用于判断当前请求的 Host。 - 如果 Host 不匹配指定的两个地址,则
$blocked
被设置为1
,否则为0
。 - 在请求处理的
location /
块中,通过if ($blocked)
判断是否需要返回 403。
记得在修改完 Nginx 配置后,要重启或重新加载 Nginx 服务以使更改生效。
内容由零声教学AI助手提供,问题来源于学员提问