2013-07-22 194 views
4

在我的流浪漢文件中,我定義了我的開發機器,專用網絡IP爲192.168.33.10,轉發端口爲「guest = 80,host = 8888」,但是當我運行我的流浪環境和我嘗試運行curl -i 192.168.33.10:8888我收到一個錯誤,說'失敗連接到192.168.33.10:8888;連接被拒絕',但是當我嘗試連接到192.168.33.10:80時,一切正常。流浪漢主機端口被忽略

我Vagrantfile是:

Vagrant::configure("2") do |config| 
    config.vm.box = "precise32" 

    config.vm.define :web do |www| 
     www.vm.hostname = "apache" 
     www.ssh.max_tries = 10 
     www.vm.network :forwarded_port, guest: 80, host: 8888 # Apache port 
     www.vm.network :private_network, ip: "192.168.33.10" 

     www.vm.synced_folder "www", "/var/www", :extra => 'dmode=777,fmode=777' 
    end 
end 

爲什麼出現這種情況?流浪者無視轉發的端口?

回答

6

默認情況下流浪盒使用NAT模式,這意味着客人是其從映射以及虛擬機透明流量router(主機和客戶機之間 VirtualBox的網絡引擎)的後面。客人看不見主人。

這就是爲什麼我們需要端口轉發。否則服務器上運行的服務將不可訪問。

對於您的情況,您使用的是Private Network,該guest虛擬機將被分配一個專用IP地址,該主機只能訪問該地址,即192.168.33.10

訪問來賓上託管的Web的正確方法是從主機=>http://192.168.33.10

你有端口轉發部分在Vagrantfile

www.vm.network :forwarded_port, guest: 80, host: 8888 # Apache port 

據轉發客80端口主機的8888 ,因爲你沒有使用NAT模式我敢肯定它會被忽略。嘗試curl -Is http://localhost:8888

注意:即使它仍然以某種方式工作,您應該從您的主機通過=>http://localhost:8888/訪問網絡。

+0

謝謝...!非常有用 – Robert