我在nginx.conf上有一个非常简单的nginx设置



注意,在此之前,我创建了一个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。示例

最新更新