全部拒绝,不阻止返回重定向



Nginx对我来说表现得出乎意料。以下是两个简化的位置块。

这按预期工作。返回 403 错误:

location / {
deny all;
root /var/www/test;
}

我预计会出现 403 错误。但是,这将返回 301 并重定向:

location / {
deny all;
return 301 https://$server_name$request_uri;
}

如何使用return指令拒绝和阻止任何 url 重定向?

在nginx中,return指令来自重写模块,deny指令来自访问模块。根据nginx文档和源代码,重写模块在NGX_HTTP_REWRITE_PHASE阶段处理(用于位置上下文中的return(,访问模块在NGX_HTTP_ACCESS_PHASE阶段处理,重写阶段发生在访问阶段之前,因此return停止请求处理并在重写阶段返回301。

根据Nginx文档,

ngx_http_access_module模块允许限制对某些客户端地址的访问。

您不能限制对另一个模块的访问 [此处为重定向模块]。

要拒绝/阻止重定向,只需通过附加#来注释它

location / {
deny all;
# return 301 https://$server_name$request_uri;
}

最新更新