上传文件遇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
相关产品推荐
相关产品推荐

