Docker+WSL2环境下Nginx访问index文件报404错误求助
问题诊断与解决步骤
1. Nginx根目录路径不匹配(核心原因)
你的docker-compose.yaml里,Nginx服务的卷挂载配置是:
volumes: - ./wordpress:/var/www/wordpress
这说明本地./wordpress文件夹被挂载到了Nginx容器内的/var/www/wordpress路径,但你在site.conf里设置的根目录却是:
root /var/www/wp-test/wordpress;
容器里根本不存在/var/www/wp-test/wordpress这个目录,Nginx找不到文件,必然返回404。修正方法:把Nginx配置里的root改成容器内实际路径:
root /var/www/wordpress;
2. WordPress入口文件匹配错误
你在location /块里的try_files规则最后指向了/index.html,但WordPress的默认入口是index.php,静态的index.html无法处理WordPress的路由逻辑。修正方法:修改规则为:
location / { try_files $uri $uri/ /index.php?$args; }
这样Nginx会优先查找静态文件,找不到就交给index.php处理,符合WordPress的URL重写需求。
3. 可选优化:server_name匹配访问地址
你访问的是localhost:8000,但Nginx配置里的server_name php-docker.local;,虽然Nginx会把这个server块作为默认服务器处理,但为了更严谨,可以修改为:
server_name localhost php-docker.local;
或者用_匹配所有主机名:
server_name _;
验证操作
修改配置后,重启容器生效:
docker-compose down && docker-compose up -d
可以查看Nginx容器日志确认配置是否正常:
docker-compose logs web
如果日志没有报错,再访问localhost:8000应该就能正常加载WordPress页面了。
内容的提问来源于stack exchange,提问作者Mohammad Elnayef
相关产品推荐
相关产品推荐

