在 Nginx 中,你可以使用 server
块和 if
指令来根据请求的 Host 头返回不同的状态码。例如,如果你想要在请求的 Host 不等于 10.19.29.110:7070
和 127.0.0.1:7070
时返回 403 Forbidden,可以这样配置:
server {
listen 7070;
location / {
if ($host != "10.19.29.110" && $host != "127.0.0.1") {
return 403;
}
# 其他处理逻辑
proxy_pass http://your_backend;
}
}
注意事项:
- 主机名匹配:在 Nginx 的
if
条件中,$host
是请求头中的 Host 字段,不包括端口。如果需要包括端口的检查,可能需要考虑其他方式。 - 性能:Nginx 的
if
使用要谨慎,因为它们可能影响性能。若有更复杂的条件或需求,可以考虑使用正则表达式或编写其他逻辑。 - 重新加载配置:修改 Nginx 配置后,记得测试并重启或重新加载 Nginx,以使更改生效。可以使用命令:
nginx -t # 测试配置文件是否正确
systemctl reload nginx # 重载配置
示例完整配置
这是一个基本的 Nginx 配置示例,只允许特定 Host 请求通过:
server {
listen 7070;
location / {
if ($host != "10.19.29.110" && $host != "127.0.0.1") {
return 403;
}
# 正常情况下代理到后端服务
proxy_pass http://your_backend_service;
}
}
根据你的具体情况调整以上配置。
内容由零声教学AI助手提供,问题来源于学员提问