我有server 80
其中包含return
和allow/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;
}
...
另一个server
与listen 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/deny
到http {}
块则相同。那么 - 何时何地检查这些限制?
ngx_http_access_模块文档没有提及任何相关内容。
答案1
deny
在 Nginx 中适用于所有相应的位置。
由于您没有定义任何位置,因此不会应用它。
尝试将重定向放入一个位置:
location / {
return 301 https://dev.monitor.domain.ms$request_uri;
}
但请注意,这不会提供有关定向主机的安全性。
您仍然需要检查 HTTPS 主机内的权限。