Пользовательская страница Bad Gateway с Nginx
можно ли обслуживать пользовательскую страницу ошибок "плохой шлюз" в Nginx?
похоже на пользовательские 404 страницы.
5 ответов
это похоже на настройку пользовательских 404 страниц. Вот что у меня есть.
#site-wide error pages
error_page 404 /404.html;
error_page 500 502 503 504 /500.html;
есть три части, которые должны быть на месте, чтобы ваша пользовательская страница ошибки отображалась вместо общей ошибки "плохой шлюз".
вы должны создать html-файл с именем что-то вроде "500.html " и поместите его в корень. В случае рельсов, работающих за Nginx, это означает, что он находится на public / 500.формат html.
-
у вас должна быть строка в файле конфигурации, которая указывает по крайней мере 502 ошибки на этот 500.HTML-страница, как это:
error_page 502 /500.html;
-
у вас должен быть блок местоположения для /500.HTML в файле config. Если ваш корень уже определен, этот блок может быть пустым. Но блок все равно должен существовать.
location /500.html{ }
Да, это возможно
введите это в терминале
cd /etc/nginx
sudo nano nginx.conf
и под http добавьте эти строки
error_page 500 Path_to_your_custom_error_page;
error_page 503 Path_to_your_custom_error_page;
error_page 504 Path_to_your_custom_error_page;
Теперь перезапустите nginx, введя следующую команду:
sudo service nginx restart
Bingo теперь вы можете увидеть пользовательское сообщение об ошибке на ошибке шлюза
используя debian (9.3 stretch на самом деле), я сделал следующие шаги:
создать
/var/www/html/502.html
с содержимым для страницы ошибки 502редактировать
/etc/nginx/sites-enabled/mywebsite.conf
так это выглядит примерно так:
server {
listen 80; listen [::]:80;
server_name www.mywebsite.com;
error_page 502 /502.html;
location /502.html {
root /var/www/html;
}
}
- затем перезапустил nginx с помощью
service nginx restart
вопрос не говорит, но это довольно часто, чтобы поразить эту проблему, когда API находятся за nginx проходят через прокси, так что в этом случае вы хотите, чтобы ответ был JSON не HTML.
мой любимый подход-просто использовать функцию перенаправления error_page
директива для перенаправления обратно на страницу ошибки на том же сайте:
error_page 502 503 $scheme://$server_name/500.json;
это одна строка, вы можете использовать одно и то же 500.json
по-разному location
, и нет необходимости в таинственной пустой location
. Вы размещаете сообщение об ошибке в 500.json
файл в корне вашего сайта. Я предполагаю, что у вас уже есть location / {...}
директива, которая обслуживает статические файлы.
вы можете, конечно, использовать этот же подход для обслуживания страницы ошибок HTML тоже.