Vagrant环境中运行Django服务后浏览器无法访问求助
Vagrant中Django服务启动正常但本地访问被拒绝的解决方法
问题场景
在Vagrant虚拟机内执行python manage.py runserver 0.0.0.0:8080启动Django开发服务器,日志显示服务正常运行,但本地Chrome浏览器访问127.0.0.1:8080时提示连接被拒绝。
排查与解决步骤
1. 配置Vagrant端口转发
Vagrant默认不会自动将虚拟机端口映射到宿主机,必须手动配置:
- 打开项目根目录的
Vagrantfile - 添加端口转发规则:
(config.vm.network "forwarded_port", guest: 8080, host: 8080guest是虚拟机内的端口,host是宿主机要映射的端口,保持一致即可) - 执行
vagrant reload重启虚拟机,使配置生效
2. 检查虚拟机防火墙设置
虚拟机的防火墙可能拦截了8080端口的外部请求:
- 进入虚拟机终端,执行命令开放端口:
sudo ufw allow 8080 - 若临时测试,可关闭防火墙(不建议生产环境使用):
sudo ufw disable
3. 修正Django的ALLOWED_HOSTS配置
Django的ALLOWED_HOSTS限制了允许访问的主机地址,需添加相关IP:
- 打开项目的
profiles_project/settings.py - 修改
ALLOWED_HOSTS配置:ALLOWED_HOSTS = ['0.0.0.0', '127.0.0.1', 'localhost'] - 重启Django开发服务器
4. 直接使用虚拟机IP访问
如果端口转发仍有问题,可直接通过虚拟机的IP访问:
- 在虚拟机内执行
ip addr(或ifconfig)查看虚拟机的局域网IP(通常为192.168.x.x格式) - 本地浏览器访问
虚拟机IP:8080即可
内容的提问来源于stack exchange,提问作者Abdhameed
相关产品推荐
相关产品推荐

