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

时间:2018-06-03 06:44:40

标签: nginx

Nginx对我的表现出乎意料。这是两个简化的位置块。

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

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

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

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

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

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

根据Nginx documentation

  

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

您无法限制访问其他模块[此处的重定向模块]。

要拒绝/阻止重定向,只需附加#

即可对其进行评论
location / {
    deny all;
   # return 301 https://$server_name$request_uri;
}