web-dev-qa-db-ja.com

ポートを使用したホスト名からローカルホストへ-OSX

自分のマシンでローカルに複数のNode.js Webサーバーを実行しようとしています。

私が書いているコードは、ドメイン名を参照する必要があるので、dev.myHost.comの規則を維持し、それをNode (技術的にはHarp.jsで1つとSails.jsで1つ実行しています)。

  • したがって、dev.hostOne.comlocalhost:123を指す必要があります
  • dev.hostTwo.comlocalhost:456を指す必要があります

これは可能ですか?もしそうなら、どのように。

15
mondo

私の理解では、ローカルの開発マシンを1つだけ使用しているようです。つまり、DNSを提供するネットワークに接続されていません。

私が正しい場合は、以下のように設定することをお勧めします:

ステップ1:MAC OSに少なくとも2つのIPアドレスを割り当てます(ドメインごとに1つ)。

192.168.0.10
192.168.0.11

2番目のIPをセットアップするには、2番目のイーサネットアダプター(物理ではなく論理)を追加する必要があります。

ステップ2:DNSサーバーがないため、以下を追加して/etc/hostsファイルを設定できます。

192.168.0.10     dev.hostone.com
192.168.0.11     dev.hosttwo.com

ステップ3:ループバックインターフェイスにエイリアスを割り当てます。

Sudo ifconfig lo0 192.168.0.10 alias
Sudo ifconfig lo0 192.168.0.11 alias

ステップ4:パケットを転送するようにipfwを設定します:

Sudo ipfw add fwd 127.0.0.1,123 tcp from me to 192.168.0.10 dst-port 80
Sudo ipfw add fwd 127.0.0.1,456 tcp from me to 192.168.0.11 dst-port 80

完了です!

今:

enter image description hereenter image description here


私はあなたのケースをテストするために2つのNode.jsウェブサーバーをセットアップしました:

$ netstat -anp tcp | grep -E "123|456"
tcp4    0    0  127.0.0.1:123    *.*    LISTEN
tcp4    0    0  127.0.0.1:456    *.*    LISTEN

重要:ipfwルールとループバックインターフェイスエイリアスは永続的ではなく、再起動後は存在しないことに注意してください。したがって、起動スクリプトを追加することを検討してください。

24
krisFR