Laravel Homestead可正常Ping通,但浏览器连接被拒绝求助
我在Windows 10上搭好Laravel Homestead后,ping虚拟机IP完全正常,但浏览器访问项目时却一直提示连接被拒绝,看着配置都没问题就是找不到问题所在。先贴出我的Homestead.yaml配置:
ip: "192.168.10.10" memory: 2048 cpus: 1 provider: virtualbox authorize: ~/.ssh/id_rsa.pub keys: - ~/.ssh/id_rsa folders: - map: d:/DATA/SourceCodes/laravel to: /home/vagrant/code sites: - map: myapp.test to: /home/vagrant/code/myapp/public databases: - homestead
结合经验,这类"ping通但连不上"的问题大多是小细节没处理好,咱们一步步来排查:
1. 先确认本地hosts映射是否正确
Windows的hosts文件在C:\Windows\System32\drivers\etc\hosts,你得手动加一行:
192.168.10.10 myapp.test
注意编辑时要右键用管理员权限打开记事本/编辑器,不然保存会失败。改完后执行ping myapp.test,看返回的IP是不是192.168.10.10,要是不对就是hosts没生效。
2. 检查Homestead虚拟机状态
打开命令行进入Homestead目录,先跑homestead status看看虚拟机是不是running状态。如果没启动,执行homestead up,启动过程中盯紧控制台,有没有文件夹映射失败、Nginx配置报错这类信息——很多时候问题就藏在这里。
3. 验证Nginx站点配置和服务
用homestead ssh登录虚拟机,先去Nginx的站点配置目录看看:/etc/nginx/sites-available/myapp.test,打开文件确认root路径是不是/home/vagrant/code/myapp/public,有没有拼错目录名。
然后检查Nginx服务状态:sudo service nginx status,要是服务没运行就重启:sudo service nginx restart,重启时如果有报错,直接跟着报错信息排查就行(比如配置文件语法错误)。
4. 排查端口转发与防火墙
打开VirtualBox找到你的Homestead虚拟机,进入「设置」-「网络」,看看网卡1的端口转发规则有没有异常——不过Homestead默认是通过静态IP访问,一般不用端口转发,但也可以试试直接访问http://192.168.10.10,如果能打开,那就是域名解析的问题;如果还是不行,就得检查Windows防火墙了。
临时关闭Windows Defender防火墙或者第三方杀毒软件,再试试访问。要是能打开,记得把192.168.10.10和myapp.test加入防火墙白名单,避免后续拦截。
5. 确认项目目录权限
登录虚拟机后,进入/home/vagrant/code/myapp,执行ls -l看看目录权限。Nginx的运行用户是www-data,得确保它能读取项目文件,尤其是public目录。必要的话执行这两条命令修复权限:
sudo chmod -R 755 /home/vagrant/code/myapp sudo chown -R www-data:www-data /home/vagrant/code/myapp/storage /home/vagrant/code/myapp/bootstrap/cache
这两个目录需要写入权限,权限不对也可能导致页面无法加载。
内容的提问来源于stack exchange,提问作者Deepak Shrestha

