解决 nginx 上传文件 413、502 坏网关进程问题
最编程
2024-05-01 20:42:09
...
场景
后台:spring boot java的jar包, 前端:vue, 部署nginx。如果文件小于1M就正常,上传较大文件(1M)以上 nginx 出现 413 Request Entity Too Large ,修改client_max_body_size 很容易解决413的问题。本地启动vue代理后端接口上传3.8M文件成功但是需要10.63s左右。线上环境使用nginx代理就出现502 Bad Gateway。nginx的access.log是499状态码。error.log没有报错信息。
413
找到配置文件nginx/conf/nginx.conf加上client_max_body_size: 50m
。
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
## 添加内容
types_hash_max_size 2048;
client_max_body_size 50m;
## 添加内容
server {
listen 80;
}
}
保存文件, 重启nginx
nginx -s reload
502 Bad Gateway
网上查到的修改nginx/conf/nginx.conf折腾了一天各种解决方案都行不通。比如以下代码
server {
location /api/ {
proxy_pass 'xxxx'; ## 后端接口域名
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 600s;
client_max_body_size 512m;
proxy_buffer_size 512k;
proxy_buffers 4 1024k;
proxy_busy_buffers_size 1024k;
proxy_temp_file_write_size 1024k;
proxy_max_temp_file_size 10m;
}
}
于是只能在阿里云提交工单求助。售后工程师那边听完描述给出的解决方案是nginx/conf/nginx.conf http加上添加以下代码,也就是413的解决方案。
types_hash_max_size 2048;
client_max_body_size 50m;
502的问题还是存在,于是提供了管理后台的账号密码给阿里的售后。
售后工程师测试反馈上传一个16M的文件正常。上传响应时间很不正常。于是我们排查了后端java部分的上传配置。
oss endpoint 设置的是外网地址,修改成内网地址就成功了。
结语
本地上传成功响应时间很长,nginx响应502。这个很不正常。这个经历被喻为菜鸟后端在换工作路上的一块砖。踮脚用(积累经验值)。