Как я могу запустить несколько приложений на одном сервере с одним и тем же портом?

Вопрос или проблема

У меня есть виртуальный сервер, и я хочу развернуть сервер VPN на порту 443, а также хостить HTTP сервер с SSL/TLS на порту 443.

На сервер указывают различные домены. Поэтому я хочу, чтобы example.com:443 обслуживал HTTP-контент, а я хотел бы получать доступ к серверу VPN через vpn.example.com:443.

Это возможно, как это работает и как я могу это настроить?

Доменные имена здесь не имеют значения. Сетевая подсистема рассматривает только IP-адрес и номер порта. Эти два параметра определяют, какой процесс получает входящий пакет.

Чтобы два разных процесса работали на одном и том же порту, они должны слушать на разных IP-адресах. Итак, если example.com переводится на 10.0.1.1, а vpn.example.com переводится на 10.0.1.2, один процесс может слушать на 10.0.1.1:443, а другой процесс может слушать на 10.0.1.2:443.

Имя одного и того же адреса/порта, например, 10.0.1.1:443, не сработает.

То же самое относится и к IPv6, безусловно.

Переместите vCenter на какой-либо другой порт, также порт VPN должен быть на каком-то другом порту.

Настройте Nginx для работы на порту 443 и сделайте обратный прокси, как петлю к обеим службам на разных портах.

Вы уверены, что упомянутый вами VPN-сервис, который работает на 443, использует протокол HTTP или это что-то другое? Если да, то я бы рассмотрел обратный прокси с опцией потока как потенциальное решение. Но, возможно, выделение VPN на отдельный порт будет хорошим решением.

Ответ или решение

Для того чтобы одновременно запустить несколько приложений на одном сервере, использующем один и тот же порт, необходимо разобраться в тонкостях работы сетевого стека и возможностях настройки серверного программного обеспечения. В вашем случае, вашей целью является размещение VPN-сервера и HTTP-сервера с SSL/TLS на порту 443. Рассмотрим, как можно этого добиться.

Описание проблемы

Ваш сервер используется для хостинга как VPN-сервера, так и HTTP-сервера, оба из которых требуют использования порта 443. Однако сетевой стек работает так, что на одном IP-адресе и порту может работать только одно приложение. Поэтому для решения этой проблемы понадобится рассмотреть варианты, которые могут обойти это ограничение.

Решение: Использование обратного прокси

Одним из самых эффективных способов организовать ваше окружение является использование обратного прокси-сервера, например, Nginx. Это позволяет вам принимать входящие подключения на одном порту (в данном случае 443) и перенаправлять их на разные внутренние службы в зависимости от доменного имени или других критериев.

Шаги по настройке

  1. Установка Nginx: Если Nginx еще не установлен на вашем сервере, это можно сделать с помощью пакетного менеджера:

    sudo apt update
    sudo apt install nginx
  2. Настройка конфигурации Nginx: В конфигурационном файле Nginx (обычно находится в /etc/nginx/sites-available/default или /etc/nginx/nginx.conf) добавьте следующие блоки для каждого сервиса:

    server {
       listen 443 ssl;
       server_name example.com;
    
       ssl_certificate /path/to/your/certificate.crt;
       ssl_certificate_key /path/to/your/private.key;
    
       location / {
           proxy_pass http://localhost:8080;  # Порт вашего HTTP-сервера
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
       }
    }
    
    server {
       listen 443 ssl;
       server_name vpn.example.com;
    
       ssl_certificate /path/to/your/certificate.crt;
       ssl_certificate_key /path/to/your/private.key;
    
       location / {
           proxy_pass http://localhost:1194;  # Порт вашего VPN-сервера
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
       }
    }
  3. Перезапуск Nginx: После внесения изменений в конфигурацию, необходимо перезапустить Nginx для применения изменений:

    sudo systemctl restart nginx

Дополнительные рекомендации

  • Безопасность соединений: Обязательно настроьте SSL/TLS для вашего HTTP-сервера и VPN-сервера. Используйте актуальные сертификаты, полученные от надежного центра сертификации.
  • Проверка работоспособности: После настройки протестируйте доступ к обеим службам, используя браузер и клиентский софт для VPN. Убедитесь, что трафик корректно проксируется и нет конфликтов.
  • Мониторинг и логирование: Настройте систему мониторинга серверов и логирование Nginx, чтобы отслеживать производительность и возможные проблемы.

Заключение

Использование обратного прокси-сервера – это современный и распространенный метод управления несколькими приложениями на одном сервере, занимающем один и тот же порт. Это решение не только позволяет вам достигнуть необходимой функциональности, но и способствует более эффективному использованию ресурсов вашего сервера.

Оцените материал
Добавить комментарий

Капча загружается...