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.

mondo
sumber

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.

KRFFR
sumber
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