Hostname ke Localhost dengan Port - OSX [ditutup]


14

Saya mencoba menjalankan beberapa Node.jsserver web secara lokal di mesin saya.

Karena kode yang saya tulis perlu mereferensikan nama domain saya ingin mempertahankan konvensi dev.myHost.comdan menunjukkan bahwa layanan non-port-80 berjalan dari Node (secara teknis saya menjalankan satu pada Harp.jdan satu pada Sails.js).

  • Jadi dev.hostOne.comharus menunjuk kelocalhost:123
  • dan dev.hostTwo.comharus menunjuk kelocalhost:456

Apakah ini mungkin? Jika ya, bagaimana.

Jawaban:


23

Dari pemahaman saya, tampaknya Anda hanya menggunakan satu mesin dev lokal, berarti tidak terhubung ke jaringan apa pun yang menyediakan DNS.

Jika saya benar, saya akan menyarankan untuk mengatur hal-hal seperti yang dijelaskan di bawah ini:

langkah 1: Tetapkan setidaknya dua alamat IP untuk MAC OS Anda (satu per domain), katakanlah:

192.168.0.10
192.168.0.11

Untuk mengatur IP kedua Anda harus menambahkan Adapter Ethernet kedua (logis bukan fisik).

Langkah 2: Karena Anda tidak memiliki server DNS, Anda dapat mengatur /etc/hostsfile Anda , dengan menambahkan:

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

Langkah 3: Tetapkan alias ke antarmuka loopback Anda:

sudo ifconfig lo0 192.168.0.10 alias
sudo ifconfig lo0 192.168.0.11 alias

Langkah 4: Pengaturan ipfwuntuk meneruskan paket:

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

Kamu selesai !

Sekarang :

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini


Saya telah menyiapkan dua Node.jsserver web untuk menguji kasus Anda:

$ 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

Penting: perhatikan bahwa ipfwaturan dan alias antarmuka loopback tidak persisten dan tidak akan ada lagi setelah reboot. Jadi pertimbangkan untuk menambahkan skrip startup.


1
Bekerja dengan indah. Inilah yang saya inginkan.
mondo

1
Senang itu berhasil! saya cukup yakin bahwa itu bukan "duplikat";)
krisFR

di Mac os sierra mendapatkan sudo: ipfw: command not found
ClintM

3
@ClintM: ipfwtelah diganti oleh pfctl. Untuk contoh cara membuka port: gauravsohoni.wordpress.com/2015/04/14/mac-osx-open-port
Joe Atzberger

Akan sangat bagus untuk memperbarui jawaban dalam format yang diharapkan pfctl.
Simon
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.