Docker部署Nginx后访问返回404 Not Found错误该如何解决
问题根因
你遇到的404错误核心为Nginx配置的站点根路径与Docker挂载的路径不匹配:
你在docker-compose.yml中将本地./public目录挂载到Nginx容器内的/var/www/html路径,你存放的index.html对应容器内路径为/var/www/html/index.html,但你conf.d/default.conf中www.example.com对应的服务块将root设置为了/var/www/html/example/public,Nginx在该路径下找不到对应文件就会返回404。
解决步骤
- 修正Nginx配置
打开conf.d/default.conf,找到www.example.com对应的服务块,将root配置修改为正确路径:
server { listen [::]:443 ssl http2; listen 443 ssl http2; server_name www.example.com; # SSL code ssl_certificate /etc/nginx/ssl/live/example.com/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/live/example.com/privkey.pem; # 修正此处的root路径 root /var/www/html; location / { index index.html; } }
- 重启Nginx容器使配置生效
在nginx目录下执行命令:
docker compose up -d --force-recreate web
异常排查(如果修改后仍然404)
- 检查宿主机文件权限:确保
./public目录及内部文件有可读权限,执行命令:sudo chmod -R 755 ./public - 验证容器内文件是否存在:执行命令进入容器查看路径下文件:
确认返回结果中包含docker compose exec web ls /var/www/htmlindex.html - 查看Nginx日志定位问题:执行命令查看错误日志:
根据日志中的具体报错路径进一步调整配置。docker compose logs web
内容的提问来源于stack exchange,提问作者sooon
相关产品推荐
相关产品推荐

