You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React应用上传大体积APK至Nginx服务器时出现413请求实体过大错误的排查求助

Troubleshooting the 413 Request Entity Too Large Error in Your React + Nginx + Docker Setup

Hey there! Let's figure out why you're still hitting that frustrating 413 error even after setting client_max_body_size 888M; in your Nginx config. I'll walk through the most likely issues and fixes based on the configs you shared.

1. client_max_body_size Might Not Be Applied to the Right Location

You've added client_max_body_size in the server block, but if your APK upload request is going through the /api location (which it probably is, since it's a backend upload endpoint), you need to make sure the setting is also applied there. Nginx allows overriding this directive at different levels, and if a location block doesn't inherit or explicitly set it, the default (usually 1MB) might kick in.

Fix: Add client_max_body_size directly to your /api location block:

location /api {
    client_max_body_size 888M; # Add this line
    proxy_pass https://up-app.unpluggedsystems.app;
    proxy_set_header X-Forwarded-For $remote_addr;
}

Alternatively, move the directive to the http block to apply it globally to all servers and locations:

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    client_max_body_size 888M; # Global setting here
    ...
}

2. Docker Nginx Might Be Loading Conflicting Config Files

The official Nginx Alpine image includes a default config file at /etc/nginx/conf.d/default.conf that defines its own server block. If your nginx.conf includes this directory (check for include /etc/nginx/conf.d/*.conf; in your http block), this default server could be overriding your settings or handling requests you don't expect.

Fix: Update your Dockerfile to remove the default config file when setting up the production environment:

# production environment
FROM nginx:stable-alpine
COPY --from=build /app/build /usr/share/nginx/html
COPY fullchain.crt /etc/ssl/fullchain.crt
COPY unpluggedapp.key.pem /etc/ssl/unpluggedapp.key.pem
COPY nginx.conf /etc/nginx/nginx.conf
RUN rm /etc/nginx/conf.d/default.conf # Add this line to remove conflicting config
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

You can also verify if the config is loaded correctly by exec'ing into your running container:

docker exec -it <your-container-name> cat /etc/nginx/nginx.conf

Double-check that your client_max_body_size line is present and not commented out.

3. Your Backend Service Has Its Own Upload Size Limit

Your /api location proxies requests to https://up-app.unpluggedsystems.app—this backend service (whether it's Node.js, Python, etc.) likely has its own file upload size restrictions that are overriding Nginx's settings. For example:

  • If it's a Node.js/Express app, multer or body-parser might be set to a smaller limit.
  • For a Django app, you'd need to adjust DATA_UPLOAD_MAX_MEMORY_SIZE and FILE_UPLOAD_MAX_MEMORY_SIZE.

Fix: Check your backend's upload configuration and set it to match or exceed 888MB. For example, in an Express app using multer:

const multer = require('multer');
const upload = multer({
  limits: {
    fileSize: 888 * 1024 * 1024 // 888MB in bytes
  }
});

4. Quick Sanity Check: Browser/Frontend Limits

While less likely, some browsers have default limits (though most are way higher than 10MB). You can rule this out by testing the upload directly with a tool like curl to bypass the React frontend:

curl -X POST -F "apk=@large-file.apk" https://up-app.unpluggedsystems.app/api/your-upload-endpoint

If this still returns a 413, the issue is definitely server-side.

Start with the first two fixes since they're directly related to your Nginx/Docker setup, then move to checking the backend. That should get your large APK uploads working!

内容的提问来源于stack exchange,提问作者gooseNJuice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 00:44:08