何时应用 NGINX 拒绝规则?

何时应用 NGINX 拒绝规则?

我有server 80其中包含returnallow/deny指令:

...
server {

    server_name    dev.monitor.domain.ms;
    listen         80;

    allow 194.***.45;
    allow 37.***.130;
    deny  all;

    return 301 https://dev.monitor.domain.ms$request_uri;
}
...

另一个serverlisten 443.

所以这里的问题是 - 为什么return 301即使对于不允许访问的 IP 也能在这里工作?

最后 - 我真的无法连接,所以allow/deny可以工作,但是......

例子:

$ curl -vL dev.monitor.domain.ms
* About to connect() to dev.monitor.domain.ms port 80 (#0)
...
< HTTP/1.1 301 Moved Permanently
 ...
< Location: https://dev.monitor.domain.ms/
...
* Issue another request to this URL: 'https://dev.monitor.domain.ms/'                                                                                                                                                                            
* About to connect() to dev.monitor.domain.ms port 443 (#1)                                                                                                                                                                                      
*   Trying 40.***.***.237... Connection timed out                                                                                                                                                                                              
* couldn't connect to host                                                                                                                                                                                                                    
* Closing connection #1                                                                                                                                                                                                                       
curl: (7) couldn't connect to host

如果添加allow/denyhttp {}块则相同。那么 - 何时何地检查这些限制?

ngx_http_access_模块文档没有提及任何相关内容。

答案1

deny在 Nginx 中适用于所有相应的位置。
由于您没有定义任何位置,因此不会应用它。

尝试将重定向放入一个位置:

location / {
    return 301 https://dev.monitor.domain.ms$request_uri;
}

但请注意,这不会提供有关定向主机的安全性。
您仍然需要检查 HTTPS 主机内的权限。

相关内容