我在做如此简单的事情时遇到了困难......
我的服务器上有一个服务,我将其配置为使用已映射 A 记录的特定主机名。但是,当使用浏览器访问此子域时,我希望返回 403 错误。
但这似乎不起作用。我只是按照我以前禁止网络流量直接进入 IP 地址的相同步骤进行操作。
server {
listen 80;
server_name 155.155.155.155;
return 403;
}
这很好用,但是当我这样做
server {
listen 80;
server_name service.mydomain.com;
return 403;
}
它没有 403。它只是转到 Nginx 测试页面。
对于完成这样的事情,有什么优雅的解决方案吗?
答案1
如果请求service.mydomain.com
转到 nginx 站点测试,则必须首先有另一个与服务器名称匹配的虚拟主机,例如 *.mydomain.com 或充当 的虚拟主机default_server
。检查您的配置并删除该配置。将您的默认虚拟主机更改为
server {
listen 80 default_server;
return 403;
}
这样,不仅对您的 IP 的直接访问会被拒绝,而且对任何未明确设置的虚拟主机的访问也将被拒绝,例如对 *.mydomain.com 或 otherdomain.com 的请求。