注意,在此之前,我创建了一个DNS记录,其中包含:
*.dev.x.mydomain.com A 118.123.123.123
然后我在nginx.conf中添加了一个配置,实际上它运行得很好,排除了一个问题,所以下面是一个修改后的简化版本。
基本上,问题是拒绝/允许似乎不起作用。
nginx.conf中的配置部分:
server {
listen 80;
server_name snippets--v2.dev.x.mydomain.com;
allow 220.123.123.123;
deny all;
location /ip {
return 200 '{"code":"0", "type": "success", "ip": "${remote_addr}"}';
allow 220.123.123.123;
deny all;
}
}
有了这个设置,毫无疑问,它应该可以工作,特别是,它应该阻止来自所有IP的访问,但220.123.123.123除外。
但实际上,它在/上确实有效,但在/ip上无效。
当我访问/ip时,我看到我的ip地址,它显示例如37.123.123.123;不是允许的IP 220.123.123.123,对吧?但是等等,为什么我一开始就能看到这个屏幕?否认声明去哪儿了。。。?
所以这是我遇到的一个奇怪的问题。在其他服务器块上,几乎相同的设置都运行良好,所以我真的不知道这里缺少了什么。谢谢
这个答案解释了allow/deny
不能与return
一起工作的原因。您可以使用Nginx回声模块或使用地理过滤器来确定是否应该允许或拒绝IP。示例