有时候页面会遇到404页面找不到错误,或者是500、502这种服务端错误,这时候我们可能希望自己定制返回页面,不希望看到默认的或者是内部的错误页面,可以通过nginx配置来实现。
1 50x错误
对于50x错误,通常不会直接将错误内容显示在页面,而是由前台页面来解析错误内容并展示在前台的某个位置。
我们可以自己定义一个json返回对象,由页面来解析这个json对象。
以500错误为例,在nginx服务器任意目录下(例如,/usr/share/nginx/html)创建一个500.json文件,内容如下:
{ "errorCode": 500, "errorDesc": "服务暂时不可用,请稍后再试" }
nginx配置文件中,在server段中添加以下内容:
error_page 500 /500.json ; location ^~ /500 { root /usr/share/nginx/html ; }
重启nginx生效。这时如果后端服务返回500错误,则nginx会把自定义的json报文返回到前台
2 404错误
对于404错误,很多时候可能用户会输错url,这时候错误会直接展示在页面上。
可以有两种处理方式,一种是同50x错误,自己定义一个404错误页面,这个页面就可以做的好看一点。
另一种方式是重定向到某个已存在的uri。例如,后端已经定义好了404错误页面,nginx就不需要单独创建一个404页面了,直接指向这个页面就可以了。
配置方法如下:
在http段中添加以下配置:
proxy_intercept_errors on; error_page 404 =301 https://$host:443/#/404 ;
proxy_intercept_errors表示对后端服务器返回错误进行拦截处理;
error_page 404 =301表示重定向到错误页面。