Docker部署Nginx后访问localhost:8000出现404错误求助
问题解决:Docker部署Nginx访问出现404错误
核心问题分析
从Nginx日志中的open() "/var/www/public404" failed错误可以看出,配置文件存在语法解析异常,导致路径拼接错误。
具体修复步骤
1. 修正Nginx配置文件的语法错误
你的Nginx配置中有两处语法问题:
index index.php行末尾缺少分号,导致Nginx错误解析后续指令try_files $uri= 404;写法不符合Nginx语法,=和404之间需要空格
修正后的完整Nginx配置:
server { listen 80; index index.php; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; error_page 404 /index.php; root /var/www/public/; location ~\.php$ { try_files $uri =404; fastcgi_pass app:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location / { try_files $uri $uri/ /index.php?$query_string; gzip_static on; } }
2. 确认项目文件结构
检查宿主机的../src目录下是否存在public/index.php文件:
- Nginx的
root指向容器内的/var/www/public/,对应宿主机的../src/public/ - 如果该文件不存在,即使配置正确也会返回404,需确保
../src/public/index.php存在且内容正常
3. 重启Docker容器使配置生效
执行以下命令重启容器:
docker-compose down docker-compose up -d --build
额外检查点
- 确认Nginx配置文件放在了
./nginx目录下(对应docker-compose中./nginx:/etc/nginx/conf.d的挂载配置),Nginx会自动加载该目录下的.conf文件 - 检查PHP容器是否正常运行,可通过
docker logs programgwithio-app查看是否有启动错误
内容的提问来源于stack exchange,提问作者Clive Corner
相关产品推荐
相关产品推荐

