Имя хоста для Localhost с портом - OSX [закрыто]

14

Я пытаюсь запустить несколько Node.jsвеб-серверов локально на моем компьютере.

Поскольку код, который я пишу, должен ссылаться на доменное имя, я хотел бы придерживаться соглашения dev.myHost.comи указывать его на службу не-port-80, запущенную из Node (технически я запускаю один на Harp.js и один на Sails.js).

  • Так что dev.hostOne.comследует указать наlocalhost:123
  • и dev.hostTwo.comдолжен указывать наlocalhost:456

Это возможно? Если так, то как.

Mondo
источник

Ответы:

23

Насколько я понимаю, кажется, что вы используете только один локальный компьютер разработчика, то есть не подключен ни к одной сети, которая предоставляет DNS.

Если я прав, я бы предложил настроить такие вещи, как описано ниже:

Шаг 1: Назначьте по крайней мере два IP-адреса вашей MAC OS (по одному на домен), скажем:

192.168.0.10
192.168.0.11

Для настройки второго IP-адреса вам нужно будет добавить второй Ethernet-адаптер (логический, а не физический).

Шаг 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

Вы сделали !

Сейчас :

введите описание изображения здесь введите описание изображения здесь


Я настроил два 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правила и псевдонимы интерфейса обратной связи не являются постоянными и больше не будут существовать после перезагрузки. Так что рассмотрите возможность добавления сценария запуска.

krisFR
источник
1
Работал КРАСИВО. Это именно то, что я хотел.
понедельник,
1
Рад, что это работает! я был почти уверен, что это не совсем «дубликат»;)
krisFR
на Mac OS sierra получение sudo: ipfw: команда не найдена
ClintM
3
@ClintM: ipfwбыл заменен на pfctl. Пример того, как открыть порт: gauravsohoni.wordpress.com/2015/04/14/mac-osx-open-port
Джо Ацбергер,
Было бы неплохо обновить ответ в ожидаемом формате pfctl.
Саймон