Tên máy chủ đến Localhost với Cổng - OSX [đã đóng]


14

Tôi đang cố gắng chạy nhiều Node.jsmáy chủ web cục bộ trên máy của mình.

Bởi vì mã tôi đang viết cần tham chiếu một tên miền mà tôi muốn giữ một quy ước dev.myHost.comvà chỉ ra rằng dịch vụ không phải là cổng 80 chạy từ Node (về mặt kỹ thuật tôi đang chạy một trên Harp.js và một trên Sails.js).

  • Vì vậy, dev.hostOne.comnên chỉ vàolocalhost:123
  • dev.hostTwo.comnên chỉ vàolocalhost:456

Điều này có thể không? Nếu vậy, làm thế nào.

Câu trả lời:


23

Theo hiểu biết của tôi, có vẻ như bạn chỉ sử dụng một máy dev cục bộ, nghĩa là không được kết nối với bất kỳ mạng nào cung cấp DNS.

Nếu tôi đúng, tôi sẽ đề nghị thiết lập những thứ như được mô tả dưới đây:

Bước 1: Gán ít nhất hai địa chỉ IP cho hệ điều hành MAC của bạn (một cho mỗi tên miền), giả sử:

192.168.0.10
192.168.0.11

Để thiết lập IP thứ hai, bạn sẽ phải thêm Bộ điều hợp Ethernet thứ hai (logic không phải là vật lý).

Bước 2: Khi bạn không có máy chủ DNS, bạn có thể thiết lập /etc/hoststệp của mình bằng cách thêm:

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

Bước 3: Gán bí danh cho giao diện loopback của bạn:

sudo ifconfig lo0 192.168.0.10 alias
sudo ifconfig lo0 192.168.0.11 alias

Bước 4: Thiết lập ipfwđể chuyển tiếp các gói:

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

Bạn xong việc rồi !

Hiện nay :

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


Tôi đã thiết lập hai Node.jsmáy chủ web để kiểm tra trường hợp của bạn:

$ 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

Quan trọng: lưu ý rằng ipfwcác quy tắc và bí danh giao diện loopback không tồn tại lâu và sẽ không còn tồn tại sau khi khởi động lại. Vì vậy, hãy xem xét thêm một kịch bản khởi động.


1
Đã làm việc ĐAP. Đây là chính xác những gì tôi muốn.
mondo

1
Vui mừng nó hoạt động! tôi khá chắc chắn rằng nó không hoàn toàn là một "bản sao";)
krisFR

trên Mac os sierra nhận sudo: ipfw: không tìm thấy lệnh
ClintM

3
@ClintM: ipfwđã được thay thế bởi pfctl. Để biết ví dụ về cách mở cổng: gauravsohoni.wordpress.com/2015/04/14/mac-osx-open-port
Joe Atzberger

Nó sẽ thực sự tốt đẹp để cập nhật câu trả lời trong định dạng dự kiến ​​pfctl.
Simon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.