Windows 上 Vagrant 端口转发问题

注:该问题只出现在 Windows 系统中,Mac OSX 系统不会出现该问题。

问题描述:Vagrant 中的 web 服务,无法端口转发到主机

比如 Django 的 runserver

$ python manage.py runserver

或者 jupyter notebook

$ jupyter notebook

在 Windows 系统中的 vagrant 虚拟机中,针对 127.0.0.1 的 web 服务,在主机中是无法接收的。

解决方法:虚拟机中 web 服务设置为 0.0.0.0

对于 Django 的 runserver,在虚拟机中设置为 0.0.0.0:8080 ,在主机中浏览器中输入 http://127.0.0.1:8080 ,就可以用浏览器使用虚拟机中的 django web 服务。

$ python manage.py runserver 0.0.0.0:8080

而对于 jupyter notebook ,需要加上参数--ip=0.0.0.0。Jupyter 会把服务设置在 8888 或者 8889 端口,如果这两个端口已经在 vagrant 中设置为虚拟机转发到主机,则可以使用 http://127.0.0.1:8888 进行接收。

$ jupyter notebook --ip=0.0.0.0

Vagrantfile 的端口转发设置

设置虚拟机 8888 和 8889 转发到主机对应的端口。可以在 Vagrantfile 中设置。

  config.vm.network "forwarded_port", host_ip: "127.0.0.1", guest: 8888, host: 8888
  config.vm.network "forwarded_port", host_ip: "127.0.0.1", guest: 8889, host: 8889

参考:

https://gist.github.com/davemkirk/90140b1edde8d18c8b83
http://pythondata.com/jupyter-vagrant/

你可能感兴趣的:(Windows 上 Vagrant 端口转发问题)