拒绝所有不阻止返回重定向

Lay*_*yne 3 nginx

Nginx对我来说意外表现.这是两个简化的位置块.

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

location / {
    deny all;
    root /var/www/test;
}
Run Code Online (Sandbox Code Playgroud)

我预计403错误.但是,这会返回301并重定向:

location / {
    deny all;
    return 301 https://$server_name$request_uri;
}
Run Code Online (Sandbox Code Playgroud)

如何拒绝和阻止任何带return指令的URL重定向?

geo*_*xsh 7

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