欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

解决 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没有报错信息。

image.png

image.png

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的问题还是存在,于是提供了管理后台的账号密码给阿里的售后。

image.png 售后工程师测试反馈上传一个16M的文件正常。上传响应时间很不正常。于是我们排查了后端java部分的上传配置。

image.png oss endpoint 设置的是外网地址,修改成内网地址就成功了。

image.png

image.png

结语

本地上传成功响应时间很长,nginx响应502。这个很不正常。这个经历被喻为菜鸟后端在换工作路上的一块砖。踮脚用(积累经验值)。