Laradock Nginx本地Docker容器无法访问问题求助
嘿,我之前在类似环境下碰到过一模一样的问题,结合你的Win10 Enterprise 1709 + Docker 17.12.0-ce + Laradock配置,给你分享几个我当时排查解决的实用步骤,你可以挨个试:
第一步:确认Nginx容器运行状态
先打开终端,运行docker ps查看容器状态,重点看Nginx容器是不是处于Up状态,有没有频繁重启的记录。如果容器是Exited或者Restarting,先看启动日志:docker logs laradock_nginx_1 # 替换成你的Nginx容器实际名称另外,直接验证Nginx配置文件语法是否合法,这是最常见的启动失败原因:
docker exec -it laradock_nginx_1 nginx -t如果输出
test is successful就没问题,否则会提示具体的配置错误位置(比如括号不闭合、路径写错)。第二步:检查端口映射与占用
Laradock默认把Nginx的80/443端口映射到主机,先确认映射是否正常:docker port laradock_nginx_1然后检查主机的80端口有没有被其他程序占用(比如Win10自带的IIS、迅雷之类的),用命令查找占用进程:
netstat -ano | findstr :80找到对应的PID后,在任务管理器里结束该进程;如果不想停其他服务,可以修改Laradock根目录下的
docker-compose.yml,把Nginx的端口映射改成比如8080:80,然后重启容器:docker-compose up -d nginx第三步:验证本地hosts配置
你之前应该配置过域名映射吧?打开C:\Windows\System32\drivers\etc\hosts(记得用管理员权限打开记事本),确认有没有类似这样的配置:127.0.0.1 mysite.test # 替换成你的项目域名要是这条被注释掉了(前面有
#),去掉注释保存即可。第四步:检查Nginx站点软链接
Laradock的Nginx需要把sites-available里的配置文件软链接到sites-enabled目录才会生效,进容器检查:docker exec -it laradock_nginx_1 ls -l /etc/nginx/sites-enabled/如果看不到
mysite.conf的软链接,手动创建:docker exec -it laradock_nginx_1 ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/mysite.conf然后重启Nginx容器:
docker restart laradock_nginx_1第五步:深挖日志细节
既然已经有mysite_error.log,直接查看具体错误信息:docker exec -it laradock_nginx_1 cat /var/log/nginx/mysite_error.log比如日志提示
no such file or directory就是项目根目录配置错误,提示connection refused可能是PHP-FPM容器没启动或者地址配置错了,针对性解决就行。第六步:清理Docker缓存重试
有时候旧缓存会导致奇怪的兼容性问题,试试清理未使用的资源(谨慎操作,会删掉闲置容器、镜像):docker system prune -a然后重新构建Nginx容器:
docker-compose build --no-cache nginx docker-compose up -d nginx
一般按这个顺序排查,很快就能定位到问题啦!
内容的提问来源于stack exchange,提问作者Gino Pane

