对的,这是可能的
在您的终端中输入此内容
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伸展)我做了以下步骤:
创建 /var/www/html/502.html 与502错误页面的内容
/var/www/html/502.html
编辑 /etc/nginx/sites-enabled/mywebsite.conf
/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; } }
service nginx restart
问题并没有说,但是当API在nginx传递代理后面时遇到这个问题是很常见的,因此在这种情况下你希望响应是JSON而不是HTML。
我最喜欢的方法是使用的重定向功能 error_page 指令重定向回同一站点上的错误页面:
error_page
error_page 502 503 $scheme://$server_name/500.json;
这是一行,你可以重用相同的 500.json 为了不同 location 是的,没有必要神秘的空洞 location 。您将错误消息放在 500.json 文件位于您网站的根目录。我假设你已经有了 location / {...} 提供静态文件的指令。
500.json
location
location / {...}
您当然可以使用相同的方法来提供HTML错误页面。
必须有三个部分才能显示自定义错误页面而不是通用的“错误网关”错误。
您必须创建一个名为“500.html”的html文件并将其放在根目录中。在Rails在Nginx后面运行的情况下,这意味着将它放在public / 500.html上。
您的配置文件中必须有一行指向该500.html页面的至少502个错误,如下所示:
error_page 502 /500.html;
您的配置文件中必须有/500.html的位置块。如果已定义根,则此块可以为空。但是块必须存在。
location /500.html{ }
它类似于设置自定义404页面。这就是我所拥有的。
#site-wide error pages error_page 404 /404.html; error_page 500 502 503 504 /500.html;