2017-01-23 33 views
0

Я хочу настроить среду моего dev так, чтобы все запросы от www.dev.com в моем браузере были перенаправлены на localhost:8080.Node.js Экспресс-настройка прокси для среды разработки, избегайте localhost в URL-адресе для Mac OS X

Я добавил 127.0.01 www.dev.com в мой/etc/host, но он не выполняет переадресацию порта. Если я иду на http://www.dev.com:8080/, он работает, но я хочу/должен использовать http://www.dev.com/, что ближе к реальной производственной среде.

Как это сделать? Я попробовал несколько решений, таких как nginx, но мне это не нравится, я бы предпочел, чтобы он был «scriptable», так что любой другой разработчик может использовать его напрямую. Я использую Express.js с узлом.

Я прочитал Assigning a domain name to localhost for development environment on Mac OS X with node.js, но на самом деле это не объясняет часть порта.

+0

Почему бы не ваше приложение Node прослушивает порт 80 вместо 8080 (хотя для запуска приложения Node требуется root)? – robertklep

+0

Поскольку запуск приложения с правами администратора был бы плохим, потому что поведение может отличаться от его производства. На самом деле это очень простой и плохой способ пойти ИМО. Например, запись файла может работать как root, но не в производстве, и поэтому вы даже не знаете, что есть проблема до тех пор, пока он не достигнет производительности. – Vadorequest

+0

Правда, хотя любое разумное приложение, которое запускается от имени root, должно отбрасывать привилегии, как только он выполнил то, что ему требовалось root privs для (например, для прослушивания порта 80). Но предлагаемый ответ - гораздо лучшее решение. В вашей производственной среде _something_ должен также прослушиваться и на порту 80, поэтому, если вы хотите совпадать с тем, что работает на производстве, вам, вероятно, нужно настроить что-то очень похожее (обратный прокси?). – robertklep

ответ

2

Вы можете использовать пересылку порта Mac. Для привязки к порту 80 требуются привилегии root (для чего ниже 1024 (?) Нужен root), и, вероятно, лучше не запускать приложение для разработки с помощью root.

Вы можете использовать pfctl порт переадресации

например Направить порт 80 8080

echo "rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080" | sudo pfctl -ef - 

Источник: https://salferrarello.com/mac-pfctl-port-forwarding/

Вы можете также использовать ipfw (Не доступен на El Capitan)

sudo ipfw add 100 fwd 127.0.0.1,8080 tcp from any to any 80 in 
+0

Хорошее решение, хотя 'ipfw' больше не существует (поскольку я думаю, что El Capitan). – robertklep

+0

@robertklep исправленный, спасибо. – Ryan

+0

'echo 'rdr pass inet proto tcp от любого до любого порта 80 -> 127.0.0.1 порт 8080" | sudo pfctl -ef -' отлично работает для Йосемити! :) – Vadorequest