加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

nginx – 如何在auth_request失败后返回403而不是500响应代码

发布时间:2020-12-13 21:13:40 所属栏目:Nginx 来源:网络整理
导读:在auth_request nginx模块返回403之后是否可以返回403响应代码,以便向用户显示禁用指令而不是500内部服务器错误,这不是非常有用的信息. 最佳答案 这可能有所帮助: 如果要显示自己的页面而不是DotCloud提供的默认错误页面,则必须使用一些技巧. 首先,请注意,

在auth_request nginx模块返回403之后是否可以返回403响应代码,以便向用户显示禁用指令而不是500内部服务器错误,这不是非常有用的信息.

最佳答案
这可能有所帮助:

如果要显示自己的页面而不是DotCloud提供的默认错误页面,则必须使用一些技巧.

首先,请注意,这仅适用于嵌入Nginx服务器的堆栈.对于其他堆栈,DotCloud负载均衡器将是您的用户和应用程序之间的唯一层,目前,它只能提供默认错误页面.

你需要告诉Nginx做所有这些事情:

使用自定义静态页面502和504错误;
将错误代码重新映射到例如500(否则,DotCloud负载平衡器将提供默认的502和504页);
拦截uwsgi / fastcgi发送的错误(否则,我们的自定义静态页面将不会被使用);
减少默认超时,因此您的超时处理程序将在平台范围的超时处理程序之前启动.
假设您的错误页面位于/static/502.html和/static/504.html中,您可以使用以下nginx.conf片段:

PHP:

fastcgi_read_timeout 10;
fastcgi_intercept_errors on;
error_page 502 =500 /static/502.html;
error_page 504 =500 /static/504.html;

的Perl / Phython:

uwsgi_read_timeout 10;
uwsgi_intercept_errors on;
error_page 502 =500 /static/502.html;
error_page 504 =500 /static/504.html;

ruby:

对于Ruby应用程序,由于Passenger将使用错误代码500,因此不需要重写.默认的Nginx配置已经为它提供了一个处理程序(errorpage 500 /static/500.html).此外,由于Passenger未公开配置变量以更改超时,因此您无法提供自定义504页面.

一旦在Nginx中启用了intercept_errors,就无法生成你的
????自己的错误页面,例如HTTP代码500,403等.您必须定义静态
????Nginx中这些错误的页面也是如此.这个限制将被取消
????未来版本的服务.

资料来源:http://docs.dotcloud.com/guides/5xx/

否则,请查看http://wiki.nginx.org/NginxVariableTutorialCn06上的这个页面,它提供了一个体面的教程. [虽然我建议通过谷歌浏览器翻译页面…]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读