Каков самый простой способ в Ubuntu направить запрос на локальный хост через другой порт? - PullRequest
0 голосов
/ 17 июня 2020

Я настраиваю среду разработки на образ виртуального ящика ubuntu. У меня есть 2 приложения, которые обычно развертываются на разных серверах приложений с разными портами:

  • Приложение A
    • a.myapp.com: 7001
    • веб-приложение
    • действует как прокси-сервер для сервера для сервисов в приложении B
    • получает хост и порт для приложения B из файлов конфигурации
  • Приложение B: b .myapp.com: 7002
    • только сервисы отдыха (недоступны из браузера)

На виртуальном образе я хочу просто развернуть 1 сервер приложений с 2 wars, чтобы избежать накладных расходов памяти на 2 сервера приложений с 2 ​​отдельными портами. В долгосрочной перспективе это действительно будет похоже на 10 приложений, поэтому необходимо хранить их все на одном сервере.

Моя текущая стратегия: я использую / etc / hosts для направления любых запросов, связанных с a.myapp.com, обратно на localhost и он хорошо работает для приложения A. Я хотел бы сделать что-то подобное с b.myapp.com:7002, но порт отличается, и, насколько я могу судить, я не могу настроить файл hosts для изменения порта.

Какой самый простой способ в ubuntu перенаправить сетевой запрос, привязанный к b.myapp.com:7002, обратно на единственный сервер приложений, работающий на 127.0.0.1:7001. Могу ли я использовать веб-прокси, например nginx, использовать ли перенаправление портов и т. Д. c? Я немного нуб, так что будь нежным. Мой главный драйвер - минимизация ресурсов. nginx может потребовать немного больше ресурсов, но может пригодиться для других вещей в долгосрочной перспективе, поэтому открыт для вариантов.

1 Ответ

0 голосов
/ 17 июня 2020

Оказалось простым решением с использованием комбинации nginx и файла hosts.

1). Добавьте оба домена в файл / etc / host

  • 127.0.0.1 a.myapp.com
  • 127.0.0.1 b.myapp.com

2 ). установите nginx и определите один сервер (обратный прокси) в разделе http в nginx .config

    server {
        listen 7002;
        #listen 7003; in future I can add N number ports for nginx to listen on
        #listen 7004; in future I can add N number ports for nginx to listen on
        location / {
            proxy_pass http://127.0.0.1:7001/;
        }
    }

Результат:

  • Когда я go на .myapp.com: 7001 файл hosts заставляет его преобразоваться в 127.0.0.1:7001
  • Когда I go в b.myapp.com:7002, файл хоста разрешает его в 127.0.0.1:7002
    • nginx прослушивает 127.0.0.1:7002 и действует как обратный прокси для 127.0.0.1:7001
  • в будущем у меня могут быть такие же запросы перенаправления сервера на портах 7003/7004 в порт 7001
...