Nginx

Обратный прокси Nginx

Обратный прокси Nginx

Что такое обратный прокси?

Прокси-сервер - это тот, который общается с Интернетом от вашего имени. Например, если сеть вашего колледжа заблокировала https: // www.facebook.com / но домен https: // exampleproxy.com по-прежнему доступен, затем вы можете посетить последний, и он будет перенаправлять все ваши запросы на серверы Facebook в Facebook и отправлять ответы от Facebook обратно в ваш браузер.

Напомним, прокси-сервер отправляет запросы от имени одного или нескольких клиентов на любые серверы в Интернете. Обратный прокси ведет себя аналогичным образом.

А обратный прокси получает запрос от всех без исключения клиентов от имени одного или нескольких серверы. Итак, если у вас есть пара серверов, на которых размещена ww1.пример.com и ww2.пример.com обратный прокси-сервер может принимать запросы от имени двух серверов, пересылать эти запросы на их соответствующие конечные точки, где генерируется ответ и отправляется обратно на обратный прокси-сервер для пересылки обратно клиентам.

Настройка

Прежде чем мы начнем настраивать файлы конфигурации Nginx и создать обратный прокси-сервер. Я хочу запечатлеть в камне то, как выглядит моя установка, чтобы, когда вы пытаетесь реализовать свой замысел, это было бы менее запутанно.

Я использовал платформу DigitalOcean для раскрутки трех VPS. Все они находятся в одной сети, каждый со своим частным IP-адресом, и только один VPS имеет статический общедоступный IP-адрес (это будет наш обратный прокси-сервер.)

ВМ / имя хоста Частный IP Публичный IP Роль
Обратный прокси 10.135.123.187 159.89.108.14 Обратный прокси, под управлением Nginx
Узел-1 10.135.123.183 N / A Запуск первого веб-сайта
Узел-2 10.135.123.186 N / A Запуск второго сайта

Два запущенных разных веб-сайта имеют доменные имена ww1.Ranvirslog.ком а также ww2.Ranvirslog.ком и обе их записи A указывают на общедоступный IP-адрес обратного прокси, i.э, 159.89.108.14

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

Кроме того, как Node-1, так и Node-2 имеют веб-сервер Apache, обслуживающий две отдельные веб-страницы. Это поможет нам отличить одно от другого.

На первом веб-сайте написано: «ВЕБ-САЙТ 1 РАБОТАЕТ!!!”

Точно так же второй веб-сайт показывает это:

Ваши веб-сайты могут отличаться, но если вы хотите воспроизвести эту настройку в качестве отправной точки, запустите apt install apache2 на Node-1 и Node-2. Затем отредактируйте файл / var / www / html / index.html, чтобы веб-сервер говорил все, что вы хотите,.

Виртуальная машина обратного прокси по-прежнему не затронута. Все виртуальные машины работают под управлением Ubuntu 18.04 LTS, но вы можете использовать любую другую ОС, какую захотите. Вы даже можете эмулировать это, используя контейнеры Docker. Создавая определяемую пользователем сеть моста Docker и порождая на ней контейнеры, вы можете назначить каждому контейнеру частный IP-адрес и перенаправить весь прокси-сервер HTTP / HTTPS в один контейнер, который будет нашим контейнером обратного прокси-сервера Nginx.

Все идет нормально.

Конфигурация Nginx по умолчанию

Начнем с установки Nginx на сервер обратного прокси, я использую Ubuntu, поэтому мой менеджер пакетов apt:

$ sudo apt установить nginx

Удаление конфигурации по умолчанию, если вы используете дистрибутив на основе Debian

Прежде чем мы продолжим, небольшое замечание о конфигурации Nginx. Все различные файлы конфигурации хранятся в / etc / nginx, включая nginx.conf, который является основным файлом конфигурации. Если мы посмотрим на содержимое этого файла (внутри блока http), вы заметите следующие две строки:


включить / etc / nginx / conf.d / *.conf;
включить / etc / nginx / sites-enabled / *;

Вторая строка включает все файлы в каталоге с поддержкой сайтов для конфигурации Nginx. Это стандартная практика для большинства дистрибутивов на основе Debian. Например, на веб-странице «Добро пожаловать в Nginx» по умолчанию есть соответствующий файл с именем default в расположении / etc / nginx / sites-available / default с символической ссылкой на / etc / nginx / sites-enabled /, но нам это не нужно. веб-страница по умолчанию, поэтому мы можем безопасно удалить символическую ссылку. Оригинал по-прежнему доступен в каталоге sites-available.

$ rm / etc / nginx / сайты-включены / по умолчанию

Но когда мы создадим конфигурацию обратного прокси, мы сделаем это в conf.d (с нашим именем файла, имеющим .conf расширение) это универсально, и работает во всех дистрибутивах, а не только в Debian или Ubuntu.

Удаление конфигурации по умолчанию для других дистрибутивов

Если вы не используете дистрибутив на основе Debian, вы найдете значение по умолчанию Страница приветствия конфигурация в / etc / nginx / conf.d / по умолчанию.conf просто переместите файл в безопасное место, если вы хотите использовать его в будущем (поскольку это не символическая ссылка)

$ mv / и т. д. / nginx / conf.d / по умолчанию.conf ~ / по умолчанию.conf

Иногда его можно найти в / etc / nginx / default.d потому что люди просто не могут прийти к единому простому стандарту! Поэтому вам придется немного покопаться в каталоге / etc / nginx, чтобы понять это.

Добавление блоков обратного прокси

Как указывалось ранее, два разных доменных имени, которые я размещаю за этим прокси-сервером:

  1. Ranvirslog.com (ВЕБ-САЙТ 1) с IP 10.135.123.183
  2. Ranvirslog.com (ВЕБ-САЙТ 2) с IP 10.135.123.186

Итак, давайте создадим по одному файлу для каждого сайта в / etc / nginx / conf.d / папка. Итак, мы хорошо организованы.

$ touch / etc / nginx / conf.d / ww1.conf
$ touch / etc / nginx / conf.d / ww2.conf

Вы можете называть файлы как хотите, если у них есть .conf в конце его имени.

В первом файле ww1.conf добавьте следующие строки:

server
слушать 80;
слушать [::]: 80;
 
имя_сервера ww1.Ranvirslog.com;
 
место расположения /
proxy_pass http: // 10.135.123.183 /;
proxy_buffering выключен;
proxy_set_header X-Real-IP $ remote_addr;

Операторы прослушивания говорят Nginx прослушивать порт 80 как для IPv4, так и для IPv6. Затем он проверяет, является ли имя_сервера ww1.Ranvirslog.com, тогда срабатывает блок местоположения и проксирует запрос на http: // 10.135.123.183 / с выключенной буферизацией. Кроме того, строка proxy_set_header… гарантирует, что исходный IP-адрес клиента будет перенаправлен на прокси-сервер. Это полезно, если вы хотите подсчитать количество уникальных посетителей и т. Д. В противном случае у прокси-сервера был бы только один посетитель - сервер Nginx.

Параметр буферизации и параметры set_header не являются обязательными и просто добавлены, чтобы сделать проксирование максимально прозрачным. Для второй мировой войны.Ranvirslog.com, я добавил следующую конфигурацию в / etc / nginx / conf.d / ww2.conf:

server
слушать 80;
слушать [::]: 80;
 
имя_сервера ww2.Ranvirslog.com;
 
место расположения /
proxy_pass http: // 10.135.123.186 /;
proxy_buffering выключен;
proxy_set_header X-Real-IP $ remote_addr;

Сохраните оба файла и проверьте, верна ли общая конфигурация:

$ sudo nginx -t

Если есть ошибки, вывод вышеуказанной команды поможет вам найти и исправить их. Теперь перезапустите сервер:

$ service nginx перезапуск

И вы можете проверить, сработало это или нет, посетив разные доменные имена в своем браузере и увидев результат.

Заключение

Сценарии использования у каждого человека разные. Упомянутая выше конфигурация может потребовать небольшой настройки, чтобы она работала в вашем сценарии. Возможно, вы используете несколько серверов на одном хосте, но на разных портах, в этом случае строка proxy_pass… будет иметь http: // localhost: portNumber / в качестве значения.

Эти детали во многом зависят от вашего варианта использования. Дополнительные сведения о других параметрах и настраиваемых параметрах см. В официальной документации Nginx.

SuperTuxKart для Linux
SuperTuxKart - отличная игра, созданная для того, чтобы бесплатно познакомить вас с Mario Kart в вашей системе Linux. Играть в нее довольно сложно и в...
Учебник Battle for Wesnoth
Битва за Веснот - одна из самых популярных стратегических игр с открытым исходным кодом, в которую вы можете играть сейчас. Эта игра не только очень д...
0 А.D. Руководство
Из множества существующих стратегических игр 0 A.D. удается выделиться как всеобъемлющее название и очень глубокая тактическая игра, несмотря на то, ч...