Nginx ngx_http_access_module 拒绝被重定向

Nginx ngx_http_access_module 拒绝被重定向

当我将 a 放入上下文deny中时httpserver -> location上下文仍在执行其重定向。

给出这个非常基本的 nginx.conf:

events {
  worker_connections  1024;
}

http {
  deny 127.0.0.1;

  server {
    listen       80;
    server_name  _;

    root    /home/johndoe/html;
    index   index.html index.htm;

    location /redirect {
      return 301 /;
    }
  }
}

我的预期是来自 127.0.0.1 的所有连接都会被拒绝;当请求资源时,情况确实如此:

$ curl -I 127.0.0.1
HTTP/1.1 403 Forbidden

但如果调用重定向则不成立:

$ curl -I 127.0.0.1/redirect
HTTP/1.1 301 Moved Permanently

有人能解释一下为什么会发生这种情况吗?如何拒绝访问location此示例中的上下文?

答案1

在这种情况下,会发生重定向,因为它正在将标头重写为 301。重写先于 nginx 流中的所有内容,因为它是要执行的第一个阶段。

在您的示例中,重定向仍会发生,但之后下一个连接将被拒绝。

相关内容