Запустити кілька серверів на одному порті


19

Я хотів би запустити XAMPP-сервер і сервер Nodejs на порту 80.

Якщо сервер отримує HTTP-запит, то XAMPP буде обробляти його, якщо сервер отримує запит Websocket, то Nodejs

Як це можливо? Якщо порт вже використовується, я не можу запустити іншу серверну програму.

Відповіді:


45

Для цього вам потрібно використовувати зворотний проксі, наприклад Apache 2.4. з mod_proxy_wstunnel .

Використовуйте це як передній план, а потім тунель підключень до відповідного сервера


22

Лише один процес може прослуховувати певний порт для тієї ж IP-адреси та протоколу, оскільки в іншому випадку операційна система не знає, в який процес надсилати отриманий пакет.

Щоб досягти того, що ви хочете, вам доведеться використовувати зворотний проксі-сервер, який прослуховуватиме порт 80 та переадресовує трафік для корекції пункту призначення. Існує кілька способів зробити це. Наприклад, ви можете налаштувати свій веб-сервер (Apache) для переадресації запитів WebSocket або ви можете налаштувати Node.js для пересилання HTTP-трафіку. Дослідіть доступні варіанти та виберіть той, який найкраще відповідає вашим потребам.


3

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

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


Лише невеликий момент: якщо ви вже використовуєте NAT для перекладу IP-адреси, ви також можете перенаправити порт. Наприклад, якщо ви працюєте з доступним для Інтернету сервером Apache і хочете використовувати XAMPP для тестування, запустіть Apache на нестандартному порту і отримайте маршрутизатор NAT зовнішнього порту 80 запитів до нестандартного порту внутрішнього IP. Це дозволить запустити XAMPP на порт 80.
Calrion
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.