现象
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的内容
-
测试3
注释掉错误转发一段,返回500