You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows 10下Vagrant Box代理连接及站点访问问题排查

无法访问Vagrant虚拟机上的本地站点?这里是排查和修复方案

刚接触Vagrant和PuPHPet遇到这种问题很常见,咱们一步步来排查:

1. 先确认本地与虚拟机的目录同步是否正确

从你的config.yaml可以看到:

  • 本地C:/Users/My Name/Documents/www被同步到虚拟机的/var/www
  • Apache的虚拟主机文档根目录是/var/www/mysite

这意味着你本地的www文件夹下必须有mysite子文件夹,里面要放你的站点文件(比如index.phpindex.html)。

SSH进入虚拟机后,执行以下命令验证:

# 检查目录是否存在且有内容
ls -la /var/www/mysite
# 检查目录权限(Apache运行用户是www-data)
ls -ld /var/www/mysite

如果目录不存在,先在本地创建mysite文件夹并放入站点文件,然后重新同步:vagrant reload --provision;如果权限不对,执行:

sudo chown -R www-data:www-data /var/www/mysite

或者直接修改config.yamlsynced_folderownergroupwww-data,再重新执行provision。

2. 验证虚拟机内部是否能正常访问站点

如果目录没问题,先在虚拟机内部测试Apache是否正常工作:

# 测试访问localhost
curl http://localhost
# 测试访问虚拟机IP
curl http://10.1.0.82

如果curl返回站点内容,说明Apache配置没问题,问题出在宿主机到虚拟机的网络;如果返回错误:

  • 检查Apache服务状态:sudo systemctl status apache2,确保服务正在运行
  • 查看Apache错误日志找线索:sudo tail -f /var/log/apache2/error.log
  • 重启Apache加载最新配置:sudo systemctl restart apache2

3. 排查宿主机到虚拟机的网络连通性

先测试IP连通性

在宿主机的命令行执行:

ping 10.1.0.82

如果ping不通:

  • 打开VirtualBox,查看虚拟机的网络适配器设置,确认是Host-Only Adapter模式,且IP地址为10.1.0.82
  • 或者暂时把config.yaml中的private_network改成dhcp,执行vagrant reload后,用vagrant ssh进入虚拟机,通过ip addr查看实际分配的IP,再更新宿主机的hosts文件

检查端口是否被防火墙拦截

如果ping通但浏览器访问不了:

  • 虚拟机中你开启了防火墙(firewall: install: '1'),但没有开放80端口,执行:
sudo ufw allow 80
sudo ufw reload
  • 暂时关闭宿主机的防火墙(Windows Defender防火墙或第三方防火墙),测试是否能访问

4. 检查代理配置是否干扰

你的config.yaml中Vagrant部分配置了全局代理,且处于启用状态:

proxy:
  http: 'http://192.168.0.2:3128'
  https: 'http://192.168.0.2:3128'
  ftp: 'http://192.168.0.2:3128'
  enabled: '1'

如果宿主机不需要代理,或者虚拟机访问外部网络不需要代理,建议把enabled改成'0',然后执行vagrant reload,避免代理设置干扰本地站点的访问。

最后验证hosts配置

确保宿主机的hosts文件(Windows是C:\Windows\System32\drivers\etc\hosts)条目正确:

10.1.0.82 mysite.test www.mysite.test

修改后记得保存,然后清空浏览器缓存或者用无痕模式重新访问mysite.test


内容的提问来源于stack exchange,提问作者Gerico

火山引擎 最新活动