Помощь с Ngnix - Несколько виртуальных машин используют Nginix (ESXi с одним публичным IP)?

Помощь с Ngnix - Несколько виртуальных машин используют Nginix (ESXi с одним публичным IP)?

В настоящее время я пытаюсь разобраться в Nginx и мне нужна помощь. Для меня это довольно новый вопрос, поэтому прошу прощения, если на этот вопрос уже был дан ответ (я же сначала поискал!).

Сценарий: У меня есть сервер Seafile (cloud.example.com) и сервер Zammand (support.example.com), оба на виртуальных машинах Ubuntu (по одной виртуальной машине на каждую), которые я защищал SSL с помощью Certbot. Очевидно, я могу запустить любой из них с SSL, но поскольку оба используют порт 443, у меня теперь проблема без правильного использования Ngnix.

Мой первый вопрос: могу ли я иметь еще одну виртуальную машину исключительно для Ngnix, которая будет передавать URL-запросы другим виртуальным машинам, или мне нужно, чтобы Seafile и Zammand были на одном сервере, чтобы использовать Ngnix / SSL для обоих? (В данный момент я установил оба на одну виртуальную машину для тестирования).

ЕСЛИ я работаю с одного сервера (установлены и Seafile, и Zammand — хотя я бы предпочел, чтобы каждый был на своей собственной виртуальной машине), я предполагаю, что мне просто нужно отредактировать мой "/etc/nginx/sites-available/default" и добавить туда пути маршрутизации? В настоящее время у меня есть 3 "sites-available" — Seafile, Zammand и default. Я вижу, что есть "sites-active", который в настоящее время является "seafile". Так что и cloud.example.com, и support.example.com, оба ведут к seafile (cloud.example.com)

Или я смотрю на это совсем неправильно? Любые конструктивные советы приветствуются! Извините, если я не очень ясно это описал.

решение1

Лучшим вариантом будет создать третью виртуальную машину и настроить nginx там. Вы также можете настроить его на любой из существующих виртуальных машин.

После этого вам необходимо настроить nginx для использования нескольких записей «сервера», по одной для каждого обслуживаемого вами домена и направления на другой бэкэнд.

В Интернете есть множество различных руководств о том, как это сделать.

решение2

Итак, у вас есть два отдельных и независимых сервера, верно? Если это правда, то вам нужно использовать что-то вроде проверки SNI, чтобы определить, к какому хосту проксировать соединение. Это можно сделать без прерывания SSL-соединения, начиная с nginx 1.11.5 и ngx_stream_ssl_preread_module.

Вам нужно будет настроить директиву ProxyPass, чтобы разрешить ей отправлять данные на удаленную систему за прокси-сервером. Затем вам нужно будет убедиться, что хост Nginx находится в Интернете, чтобы все запросы сначала проходили через него.

Используя проверку SNI и прокси-серверы потоков TCP, удаленный сервер обрабатывает все свои SSL-соединения напрямую, а nginx просто проксирует трафик с одной конечной точки IP.

Я бы еще это проверил:https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/

Конкретно рассмотрим проверку SNI при использовании прокси-серверов TCP Stream:http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.htmlSNI включается во время подтверждения TLS до фактической обработки подтверждения, что позволяет nginx отправлять трафик на нужную конечную точку и разрешать этой конечной точке фактически выполнять подтверждение TLS.

Связанный контент