仮想マシンにRailsサーバーがあり、ホストからローカルホストにアクセスする必要があります。両方を試しましたNAT(ポート転送-ポート80と3000ゲスト側)とブリッジアダプタですが、何も機能していないようです。
どちらの場合も、ポート80にアクセスできましたが、ポート3000でローカルホストに接続しようとして失敗しました(したがって、xamppサーバーへのアクセスに問題はありませんでした)。
サーバーがゲスト側にあるときにホストからローカルホストにアクセスする方法があれば教えてください。
ゲストにLinux(Debian)があり、ホスト側にWindows7があります-VirtualBoxを使用しています。
ここでは少なくとも3つの個別のコンポーネントが使用されており、それぞれを正しく構成する必要があります。
Rails(または別のサーバーアプリケーション)が開いてネットワーク接続を受信すると、IPとポートの両方にバインドされます。着信要求がこれらの両方に一致しない場合、受け入れられません。接続。Rails server --help
から:
Usage: Rails server [mongrel, thin etc] [options] -p, --port=port Runs Rails on the specified port. Default: 3000 -b, --binding=IP Binds Rails to the specified IP. Default: localhost ...
したがって、デフォルトでは、Railsは、そのlocalhost
(ループバック)ネットワークアダプター(lo
と呼ばれます)に送信された要求のみを受け入れます。このアダプターは内部からのみアクセスできるためです。同じコンピューターの場合、受け入れる要求はDebian VM自体からのみです。テストには適切で安全ですが、本番環境や別のコンピューターからのテストには役立ちません。
Railsを他のコンピューター(Windows 7ホストを含む)からアクセスできるようにする場合は、Railsに、どのIPアドレスにバインドするかを指示する必要があります。 Debianには、外部からアクセスできるものがあります(以下を参照)。
ただし、より簡単な方法は、Railsに特別なIPアドレス0.0.0.0
にバインドするように指示することです。これは、任意のネットワークアダプター。したがって、Railsサーバーを次のように起動します:
Rails server -p 80 -b 0.0.0.0
ネットワーク上であなたのVMを見ることができる人なら誰でも、あなたのWebサイトにアクセスできるようになります。
これは、他の2つのコンポーネントが機能していても、まだ混乱している可能性があります。
独自の個別のコンピューターであるDebian仮想マシンにブラウザーを向ける必要があります。
localhost
の経験則では、常に同じコンピューターを参照します。ただし、ネットワーキングの目的で、Debian VMは独自の別個のコンピューターです。Windows7ホストでWebブラウザーを使用している場合、localhost
は常にWindowsを参照します。 7と他には何もありません。
ここには2つのオプションがあります。
VirtualBox VMアダプターをブリッジモードに設定します(質問で述べたように)。これにより、DebianがWindows7ホストと同じ外部/ホーム/職場ネットワークに直接配置されます。 ifconfig
を実行してDebianVMのIPを決定します。eth0
またはeth<something>
アダプターのIPを探します。これをブラウザーのアドレスバーに接続します。
NATアダプタと VirtualBoxポート転送 を使用します。IMOこれはより複雑です。
Debianに取り組んでからしばらく経ちましたので、現在のデフォルトが何であるかわかりませんが、上記の2つが機能しない場合は、これを調べる価値があるかもしれません。 Debianがファイアウォールを実行している場合は、別のマシンからアクセスしたいポートを開く必要があります。
お役に立てれば :)