我有一个用Unicorn托管的Sinatra应用程序,在它前面有nginx.当Sinatra应用程序出错(返回500)时,我想提供一个静态页面,而不是默认的"内部服务器错误".我有以下nginx配置:
server {
listen 80 default;
server_name *.example.com;
root /home/deploy/www-frontend/current/public;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 5;
proxy_read_timeout 240;
proxy_pass http://127.0.0.1:4701/;
}
error_page 500 502 503 504 /50x.html;
}
Run Code Online (Sandbox Code Playgroud)
error_page指令在那里,我有sudo'd作为www-data(Ubuntu)并验证我可以cat
文件,因此它不是权限问题.使用上面的配置文件,并且service nginx reload
,我在错误时收到的页面仍然是"内部服务器错误".
我的错误是什么?
我使用nginx作为apache服务器的前端.配置文件如下所示:
upstream apache {
server localhost:8000;
}
server {
listen 80;
error_page 503 /www/static/503.html;
# need some magic here #
location /static/ {
root /www/static/;
}
location / {
proxy_path http://apache/;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当apache关闭时,我收到一个由nginx生成的简单502页面.如何使它服务于我的自定义错误页面并返回状态代码503,这在这种情况下更相关?