4

Vagrantfile には、192.168.33.10 のプライベート ネットワーク IP と「guest=80, host=8888」の転送ポートを持つ開発マシンの定義がありますが、vagrant 環境を実行し、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

なぜこれが起こるのですか?vagrant は転送されたポートを無視していますか?

4

1 に答える 1

6

デフォルトでは、Vagrant Box は NAT モードを使用します。これは、仮想マシンとの間のトラフィックを透過的にマッピングするrouter(ホストとゲストの間の VirtualBox Networking エンジン) の背後にゲストがあることを意味します。ゲストはホストから見えず、到達できません。

そのため、ポート転送が必要です。そうしないと、ゲストで実行されているサービスにアクセスできません。

あなたの場合、Private Networkを使用しています。ゲストには、ホストのみがアクセスできるプライベート 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/、ホストから => で Web にアクセスする必要があります。

于 2013-07-22T21:43:03.030 に答える