Вопрос: Запуск нескольких серверов на одном и том же порту


Я хотел бы запустить сервер XAMPP и сервер Nodejs на порту 80.

Если сервер получает HTTP-запрос, то XAMPP будет обрабатывать его, если сервер получит запрос Websocket, затем Nodejs

Как это возможно? Если порт уже используется, я не могу запустить другую программу сервера.


18
2017-08-27 12:00


Источник




Ответы:


Для этого вам нужно будет использовать обратный прокси-сервер, например. Apache 2.4. с mod_proxy_wstunnel,

Используйте его как интерфейс, а затем туннелируйте соединения с соответствующим бэкэнд.


44
2017-08-27 12:25





Только один процесс может прослушивать определенный порт для одного и того же IP-адреса и протокола, поскольку в противном случае операционная система не будет знать, к какому процессу будет отправлен полученный пакет.

Чтобы достичь желаемого, вам придется использовать обратный прокси который будет прослушивать порт 80 и пересылать трафик для исправления адресата. Существует несколько способов сделать это. Например, вы можете настроить веб-сервер (Apache) для пересылки запросов WebSocket или настроить Node.js для пересылки HTTP-трафика. Изучите доступные варианты и выберите тот, который лучше всего соответствует вашим потребностям.


22
2017-08-27 12:29





Помимо упомянутого выше варианта обратного прокси-сервера, у вас может быть несколько IP-адресов, назначенных машине. Это может стоить для IPv4 (или просто не быть доступным в зависимости от места размещения вашего сервера), но не должно, если вы в состоянии использовать IPv6 (т. Е. Если люди, подключающиеся к одной или обеим или вашим службам, будут иметь доступ к IPv6) , Таким образом, оба сервиса могут прослушивать порт 80 по разным адресам.

Поскольку вы упоминаете только порт 80, я предполагаю, что вы не используете HTTPS. Если вы используете опцию обратного прокси, вам нужно либо иметь сертификат с несколькими именами SSL, либо настроить SNI, и жить с тем, что некоторые старые клиенты (IE на XP, старые версии Android) не смогут подключаться без ошибок. Параметр с несколькими адресами обходит эту проблему за счет необходимости назначения дополнительных адресов (адресов).


3
2017-08-28 14:44



Небольшая точка: если вы уже используете NAT для перевода IP-адреса, вы также можете перенаправить порт. Например. если вы используете Интернет-доступный сервер Apache и хотите использовать XAMPP для тестирования, запустите Apache на нестандартном порту и попросите внешний порт 80 внешнего маршрутизатора 80 использовать нестандартный порт внутреннего IP-адреса. Это позволит запустить XAMPP на порту 80. - Calrion