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

上传文件遇Nginx 413错误,添加配置后站点无法连接

排查Nginx无法连接及413错误方案

1. 先确认Nginx容器状态

先检查Nginx容器是否正常运行:

docker-compose ps nginx

如果容器未启动,查看日志定位错误:

docker-compose logs nginx

2. 修正Nginx配置挂载问题

你的docker-compose里Nginx仅挂载了conf.d目录,但你修改的是nginx.conf主配置文件——默认Nginx容器的主配置路径是/etc/nginx/nginx.conf,且主配置中默认会包含conf.d下的站点配置。当前配置的核心问题是:自定义的nginx.conf没有被容器加载,甚至可能因配置不完整(比如缺失events块)导致Nginx启动失败。

两种修复方式:

方式一:用conf.d站点配置(推荐)

在.docker/nginx/conf.d/下创建default.conf,把站点配置放在这里,同时加入client_max_body_size:

server {
    listen 80;
    server_name 194.58.119.116;

    root /var/www/public;
    client_max_body_size 500M;

    location / {
        try_files $uri /index.php;

        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept, Authorization';
            return 200;
        }
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

之后删除你单独的nginx.conf,依赖容器默认的主配置即可。

方式二:挂载完整主配置

如果坚持用自定义nginx.conf,必须补全events块,同时修改docker-compose的挂载规则:
修改后的nginx.conf:

events {
    worker_connections 1024;
}

http {
    client_max_body_size 500M;

    server {
        listen 80;
        server_name 194.58.119.116;

        root /var/www/public;

        location / {
            try_files $uri /index.php;

            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
                add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept, Authorization';
                return 200;
            }
        }

        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass app:9000;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
        }
    }
}

修改docker-compose中Nginx的volumes:

volumes:
  - ./:/var/www
  - ./nginx.conf:/etc/nginx/nginx.conf
  - ./.docker/nginx/conf.d/:/etc/nginx/conf.d

3. 修正PHP配置的错误位置

你在Nginx容器里设置的PHP环境变量完全无效——PHP配置属于app容器,需单独配置:
在docker-compose的app服务中添加挂载:

app:
  # ...其他原有配置
  volumes:
    - ./:/var/www
    - ./.docker/php/conf.d/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini

然后创建.docker/php/conf.d/uploads.ini文件:

upload_max_filesize = 500M
post_max_size = 500M
memory_limit = 512M

4. 重启容器生效

修改完成后重启所有容器:

docker-compose down && docker-compose up -d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:55:38