如果要显示自己的页面而不是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上的这个页面,它提供了一个体面的教程. [虽然我建议通过谷歌浏览器翻译页面…]