Настройка Ubuntu Server так, чтобы приложение Node.Js (порт 3000) обслуживалось по определенному адресу сервера домена - PullRequest
8 голосов
/ 15 мая 2011

Я создал приложение node.js-express. По умолчанию он прослушивает порт 3000. Я разместил систему на экземпляре EC2 и указал запись A домена на эластичный IP-адрес AWS.

Я бы хотел, чтобы HTTP-запросы к доменному имени автоматически направлялись на порт: 3000 или я хотел бы иметь возможность запустить сервер Express HTTP на порту 80. (Я попытался запустить http-сервер узла на порт 80, но получил ошибку)

Я могу получить доступ к приложению узла, если наберу www.myurl.com:3000, но мне нужно иметь возможность отказаться от этого требования на благо конечных пользователей.

Кто-нибудь знает, как заставить все узлы, порты и домены прекрасно играть вместе на моем сервере amazon-buntu?

Ответы [ 3 ]

7 голосов
/ 15 мая 2011

Эта статья показалась мне полезной, когда у меня возникла та же проблема:

http://www.debian -administration.org / article / 386

В итоге я использовал authbind- после настройки вы просто делаете:

authbind node myscript
4 голосов
/ 10 июля 2013

В моем сценарии развертывания я обычно просто запускаю это, чтобы гарантировать, что трафик TCP на порту 80 переходит к 3000:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
0 голосов
/ 09 ноября 2011

У тебя такая же проблема со мной несколько месяцев назад.У меня есть приложение NodeJS http://obrool.com (приложение чатов) и http://wpfight.com (симулятор полета в реальном времени), которое работает на Amazon EC2 Small.Я запускаю этот веб-сайт в течение 3 месяцев без перезапуска, что означает стабильную работу.

Я использую Express & Nowjs, работающий на порте 8003. Затем я использую Haproxy в качестве внешнего интерфейса для перенаправления порта 80 на порт 8003. ТакЕсли у вас есть экспресс-прослушивание через порт 3000, с помощью Haproxy, вы можете настроить его на express.your-domain.com (порт 80).

Вот мой учебник по запуску приложения NodeJS на порту 80 в Amazon EC2Ubuntu:

http://www.yodi.me/blog/2011/09/20/run-nodejs-and-nowjs-as-sub-domain-in-port-80-using-haproxy-websocket-ubuntu/

PS, я уже использую много методов:

  1. Используя NGINX для обратного прокси, я взломал NGINX 0.8с TCP Upstream, но не удалось, потому что он все еще не поддерживает веб-сокеты.Основано на https://github.com/LearnBoost/socket.io/wiki/Nginx-and-Socket.io Говорят, что использование NGINX 1.1.1 для имеет поддержку прокси HTTP / 1.1.Я использую последнюю версию NGINX 1.1.3, и она не работает.Даже @NGINX ответил на мои твиты и сказал, что пока нет поддержки веб-сокетов.

  2. Node-http-proxy все еще имеет проблемы.

  3. Authbindи sudo Вы можете выполнить authbind, чтобы nowjs работал на порту 80 или устанавливался как sudo.Иногда возникают проблемы.

  4. IPTABLES sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8003 Лучше использовать runit для созданияnodejs запускается как служба и с разрешения пользователя.

  5. HAProxy на Websocket Socket.io делает несколько ошибок и рукопожатие для подключения пользователя.Это, вероятно, займет около 5-10 секунд.

...