как поставить nodejs и apache в один и тот же порт 80

Я должен поместить nodejs в порт 80, но apache уже использует его. Как я могу поставить оба (nodejs и apache) на один и тот же порт 80? Мне это нужно, потому что в моем университете все порты заблокированы, кроме PORT 80. (Это приложение реального времени с nodejs и socket.io (websockets), а с другой стороны - приложение php). большое спасибо

 code ninja18 сент. 2013 г., 19:48
В настоящее время я делаю это так: Nginx: 80 - & gt; прокси в зависимости от имени хоста - & gt; Узел / Apache /? от порта 8000 г.
 code ninja21 июл. 2012 г., 19:35
@Douglas, который работает медленно. Тогда нет смысла использовать node.js, потому что apache замедлит его. Лучше сделать это наоборот, чтобы быть эффективным.
 Douglas23 июн. 2012 г., 21:39
Вы можете прокси узел.js трафикthrough Apache.
 Douglas22 июл. 2012 г., 02:53
Хм, я раньше не слышал об использовании node.js для производительности. По какой-то причине я предположил, что он не может изменить настройку Apache, хотя теперь я вижу, что вопрос не говорит ничего подобного.

Ответы на вопрос(6)

Я обычно используюHAProxy в качестве внешнего интерфейса в подобных ситуациях и иметь этот прокси для соответствующего внутреннего сервера. (Хотя создание вашего node.js для прокси-сервера также является подходящим подходом в зависимости от ваших потребностей).

Вы также можете использовать Apache 2 mod_proxy и mod_proxy_http, которые могут быть более надежными или работать лучше в зависимости от вашей системы.

Вот пример:

# Use Apache for requests to http://example.com/
# but use Node.js for requests to http://example.com/node/
<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/example/
    <Location /node>
        ProxyPass http://127.0.0.1:8124/
        ProxyPassReverse http://127.0.0.1:8124/
    </Location>
</VirtualHost>

И, конечно, вы можете изменить директивы в соответствии со своими потребностями, например, использовать другой порт для вашего виртуального хоста (например, 443), другой порт для Node.js или настроить прокси-сервер под другим блоком, например, для субдомена. (например, node.example.com).

Я делаю это через прокси node.js ..

устанавливатьhttp-proxy сnpm или жеофициальная страница

Пример:

var http = require('http'),
httpProxy = require('http-proxy'),
proxyServer = httpProxy.createServer ({
    hostnameOnly: true,
    router: {
        'domain.com':       '127.0.0.1:81',
        'domain.co.uk':     '127.0.0.1:82',
        '127.0.0.1':        '127.0.0.1:83'
    }
});

proxyServer.listen(80);

Это создает процесс узла, прослушивающий порт 80, и пересылающий запросы для доменов, которые идут по адресу: 81,82,83 и т. Д. Я рекомендую запустить это сforever и добавление записи вinit.d так что ваш прокси работает, если система выключается.

 23 июл. 2014 г., 11:43
@ZiaUrRehman Я обнаружил, что nginx - лучшее решение, потому что он более стабилен, запускается при загрузке и, вероятно, быстрее .. Однако оба работают;). Если вы хотите проверить производительность HAProxy / Varnish
 23 июл. 2014 г., 22:30
@ZiaUrRehman Выездdigitalocean.com/community/tutorials/… Шаг 5 ..
 23 июл. 2014 г., 09:58
Этот ответ старый, но самый лучший, который я нашел.http-proxy теперь работает совершенно по-другому. Но результаты такие же - & mdash; и удивительно. У меня Apache работает на 8000 и прокси-скрипт node.js на 80 и добавлен в init.d, и он работает как шарм.
 23 июл. 2014 г., 22:34
@ZiaUrRehman вы, вероятно, не перезагрузили конфигурацию (например,/etc/init.d/nginx reload)
 23 июл. 2014 г., 22:27
Я пробовал nginx, но не смог заставить его работать как положено. Он всегда указывал на HTML по умолчанию nginx. К сожалению, я вообще не знаком с nginx. Если я должен использовать nginx, то это то, что я должен использовать. Тем не менее, можете ли вы привести меня к какому-то простому пошаговому руководству, которое выполняет именно это?
Решение Вопроса

Я лично сделал это наоборот от @liammclennan.Некоторые предлагают что проксирование через Apache сводит на нет некоторые преимущества Node по производительности и масштабируемости (у меня нет опыта, поскольку мой сервер не получает такого большого трафика, но по ссылке @ liammclennan):"Every request that comes in through Apache will cause an Apache thread to wait/block until the response is returned from your Node.js process."что явно не согласуется с архитектурой Node.)

я использовалузел-HTTP-прокси настроить прокси-сервер Node примерно так, как описано в первой ссылке (мой прокси-сервер Node работает на порту 80; Apache и другие мои службы Node не работают). Кажется, до сих пор работало хорошо, хотя у меня иногда возникали проблемы со стабильностью, которые я "решил". путем проверки прокси, все еще работающего с заданием cron (edit: это кажется намного более устойчивым в эти дни). Прокси довольно легкий и занимает около 30 МБ памяти.

 25 июн. 2012 г., 17:35
@ Альфред Достаточно справедливо. Я понимаю, что nginx не является блокирующим, поэтому он не будет страдать от тех же проблем, что и Apache, и, безусловно, имеет хорошую репутацию в отношении скорости. Для меня Node кажется хорошим решением, так как он довольно прост для памяти и уже установленного программного обеспечения, но для большего & amp; более загруженные сайты - это, вероятно, способ пойти прямо сейчас.
 25 июн. 2012 г., 16:43
Более популярным, стабильным является использование NGinx. Даже (оригинальный, но не развивающийся) создатель Райан Даль предложил это, потому что node.js все еще довольно молодой проект.
 09 янв. 2014 г., 02:20
Похоже, что прокси-сервер Apache подойдет для сайтов с низким трафиком или для разработки, а когда в дальнейшем понадобится производительность, вы бы выбрали выделенный чистый сервер node.js.
 10 янв. 2014 г., 11:48
@meloncholy да, если вам платят за работу исключительно над проектами узлов :). Другое решение для разработки - запускать Apache и узел на отдельных портах и запросы прокси с помощью Pow (pow.cx) что очень просто. И с узлом на производстве я, вероятно, настрою кластер узлов (rowanmanning.com/posts/node-cluster-and-express).
 09 янв. 2014 г., 11:13
@ snez Конечно, все должно быть хорошо, хотя, по моему опыту, просто запустить сервер Node (на другом порту) чрезвычайно легко для dev. Тем не менее, у меня есть Node везде, и я почти не использую Apache в эти дни.

Я нашел крутой смыслЗапустите apache и nodejs на порту 80, еще не пробовал но сделаю конечно

Step 1

Get a VPS that offers 2 or more IP addresses.

Step 2

From the WHM cPanel, find the menu item Service Configuration, select Apache Configuration and then click on Reserved IPs Editor.

Step 3

Tick the IP address you DON'T WANT Apache to listen to, and write it down so you can use it in the next step. Click Save.

Step 4

Install Node.js, and create a server like this:

var http = require('http');

var server = http.createServer(function(req, res) {
  res.writeHead(200);
  res.end('Hello, world!');
});

server.listen(80, '111.111.111.111');

Replacing 111.111.111.111 with the IP address you previously reserved from the WHM cPanel.

Step 5

Stop wasting your time and never listen to those telling you to use mod_rewrite to proxy Node.js again.

Update:

Мы можем решить проблему разными способами, и ИМХО, мы должны, по крайней мере, знать каждый возможный путь. Мы можем сделать это, не покупая новый IP-адрес, разумеется, поставив прокси-сервер перед сервером Apache и NodeJS, каждый из которых работает с другими портами, кроме 80.

 20 нояб. 2017 г., 08:33
Я вернусь к мнению @AliAzhar. Я не могу просто купить другой IP для такого проекта. Альтернативный случай: запуск обоих на моей локальной машине в качестве тестовой среды. Где я могу получить другой IP, если у меня только один сетевой адаптер?
 27 мая 2017 г., 19:40
Требуется дополнительный IP, который во многих машинах предоставляется за дополнительную плату. Спрашивающий упомянул, что он занимается университетским проектом. Это означает, что, скорее всего, ему нужно решение для запуска узла и apache по одному и тому же IP-адресу.

Вы не можете ". Вы должны запустить node.js на другом порту, а затем прокси-запросы через Apache. Вы можете сделать это используя mod_proxy

http://davybrion.com/blog/2012/01/hosting-a-node-js-site-through-apache/

 27 июн. 2017 г., 00:31
Это кажется мертвой ссылкой. Копия находится вgithub.com/davybrion/companysite-dotnet/blob/master/content/…

Ваш ответ на вопрос