nginx 该报502错误确显示404

现象

nginx转发后端服务报错,应是502,但是返回值却是404

分析

  • 查看nginx配置文件,有如下一段
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
  • 报错404是因为返回 50* 之后,会转到 /50x.html 页面,而找不到50x.html报的 404错误

解决

  • 方法一
    将上边那一段整个注释掉

  • 方法二
    在根目录下添加 50x.html页面

测试

  • nginx配置文件中添加或修改为如下内容:
server {
    listen       80;
    server_name  web80;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        add_header Cache-Control no-store;
    }
        # 写一个location,转发给不存在的页面。
        location /test/ {
          proxy_pass http://127.0.0.1:82/;
        }


    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}
  • 测试1
    访问 IP/test时,本来应该是500,却报错404

  • 测试2
    在根目录添加一个 50x.html文件,内容为"erro 50x",访问 IP/test ,显示 50x.html的内容

image.png

  • 测试3
    注释掉错误转发一段,返回500

image.png

posted on 2021-09-15 19:55  运维开发玄德公  阅读(52)  评论(0编辑  收藏  举报  来源

导航