Пользовательская страница ошибки 502 Bad Gateway
Я хочу использовать Nginx в качестве простого обратного прокси-сервера, но если сервер позади Nginx не работает, я просто должен был отобразить пустую страницу. По какой-то причине эта конфигурация не отображает пустую страницу при ошибке 502, и я не могу понять, почему.
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
use epoll;
# multi_accept on;
}
http {
keepalive_timeout 65;
proxy_read_timeout 200;
upstream tornado {
server 127.0.0.1:8001;
}
server {
listen 80;
server_name www.something.com;
location / {
error_page 502 = @blank;
proxy_pass http://tornado;
}
location @blank {
index index.html;
root /web/blank;
}
}
}
3 ответа
Я считаю, что "корень" игнорируется в именованных местах (@blank). Не могу сказать, если это по замыслу или ошибка.
Это работает для меня (0.7.67):
location / {
error_page 502 = /blank.html;
proxy_pass http://tornado;
}
location = /blank.html {
root /foo/bar;
}
Я добавил следующую конфигурацию внутриserver
директива файла конфигурации виртуального хоста. Он работает, только если вы поместите его туда. Nginx будет жаловаться и не будет перезагружаться, если вы поместите его в nginx.conf. Вы можете протестировать и проверить его с помощью командыnginx -t
.
server {
// ........
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html/;
}
// ........
}
Затем вам следует добавить файл в папку/usr/share/nginx/html/50x.html
который будет отображаться после статуса ответа HTTP 500/502/503/504.
echo "If you see me, then you got a 50x response status" | sudo tee /usr/share/nginx/html/50x.html
Протестировано для nginx/1.14.2.