I am using nginx as a frontend to an apache server. The config file looks like:
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/;
}
}
For now, when apache is down, I receive a plain 502 page generated by nginx. How to make it serve my custom error page and return status code 503 which is more relevant in this situation?
Something like this
upstream apache {
server localhost:8000;
}
server {
listen 80;
error_page 502 503 /www/static/503.html;
location /static/ {
root /www/static/;
}
location / {
proxy_path http://apache/;
}
}
You can append standard error codes together to display a single page for several types of errors.
For example:
error_page 502 503 /www/static/503.html;
For more reference you can refer the error_page manual
On the error_page manual it says
Furthermore, it is possible to change the code of answer to another, for example:
error_page 404 =200 /.empty.gif;
Another option
To make it return a different error code you can make use of a return
keyword
For example:
# check for a condition
if (condition) {
return 503;
}
来源:https://stackoverflow.com/questions/5031818/show-a-custom-503-page-if-upstream-is-down