Debian настройка nginx прокси

Обновлено: 04.07.2024

Преимущества использования обратного прокси Nginx на экземпляре

Требования

У вас есть привилегии sudo или доступ к пользователю root.
У вас есть веб-приложение, работающее на нестандартном веб-порту экземпляра.
У вас есть вычислительный экземпляр, на котором запущен Ubuntu или Debian.
Убедитесь, что ваше доменное имя указывает на IP-адрес вашего сервера (запись A или AAAA).

Установка и настройка Nginx

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

1. Обновите кеш пакетов APT и установите веб-сервер Nginx через диспетчер пакетов:

2. Отключите виртуальный хост по умолчанию, который предварительно настроен при установке Nginx через диспетчер пакетов apt:

3. Войдите в каталог /etc/nginx/sites-available и создайте файл конфигурации обратного прокси.

4. Вставьте следующую конфигурацию Nginx в текстовый редактор. Прокси-сервер перенаправляет все входящие соединения на порт 80 на сервер Webfsd, прослушивая порт 8000. Измените значение порта в зависимости от порта конкретного приложения.

access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;

Примечание. Доступы и ошибки находятся в файлах журнала в /var/log/nginx.

5. Скопируйте конфигурацию из /etc/nginx/sites-available в /etc/nginx/sites-enabled. Рекомендуется использовать символическую ссылку.

6. Протестируйте файл конфигурации Nginx

который должен вернуть

7. Откройте веб-браузер на локальном компьютере и вставьте свой общедоступный IP-адрес, который будет отображать домашнюю страницу вашего веб-приложения.

Добавление TLS к обратному прокси-серверу Nginx с помощью Let's Encrypt

Убедитесь, что ваше доменное имя указывает на IP-адрес вашего сервера (запись A или AAAA). В противном случае будет ошибка.

1. Установите Certbot на свой экземпляр с помощью диспетчера пакетов APT:

2. Certbot предоставляет плагин, разработанный для веб-сервера Nginx, автоматизирующий большую часть работы по настройке, связанной с запросом, установкой и управлением сертификатом TLS:

3. Ответьте на запросы, отображаемые на экране, чтобы запросить действительный сертификат Let's Encrypt:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx

Использование Nginx в качестве обратного прокси дает вам несколько дополнительных преимуществ:

В этой статье описаны шаги, необходимые для настройки Nginx в качестве обратного прокси.

Подготовка

Мы предполагаем, что у вас установлен Nginx на вашем сервере Ubuntu , CentOS или Debian .

Использование Nginx в качестве обратного прокси

Чтобы лучше проиллюстрировать, как proxy_pass директивы location и proxy_pass , рассмотрим следующий пример:

Когда адрес проксируемого сервера содержит URI, ( /wordpress/ ), URI запроса, который передается на проксируемый сервер, заменяется URI, указанным в директиве. Если адрес прокси-сервера указан без URI, полный URI запроса передается на прокси-сервер.

Передача заголовков запроса

Когда Nginx проксирует запрос, он автоматически определяет два поля заголовка в проксируемых запросах от клиента, Host и Connection , и удаляет пустые заголовки. Host установлен на переменную $proxy_host , а Connection установлено на закрытие.

Чтобы настроить или установить заголовки для прокси-соединений, используйте директиву proxy_set_header , за которой следует значение заголовка. Вы можете найти список всех доступных заголовков запросов и их разрешенные значения здесь . Если вы хотите предотвратить передачу заголовка на прокси-сервер, установите для него пустую строку "" .

В следующем примере мы меняем значение поля заголовка Host на $host и удаляем поле заголовка Accept-Encoding , устанавливая его значение в пустую строку.

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

Общие параметры обратного прокси Nginx

Выводы

Вы узнали, как использовать Nginx в качестве обратного прокси. Мы также показали вам, как передавать дополнительные параметры на сервер, а также изменять и устанавливать различные поля заголовка в проксированных запросах.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Как установить Nginx в

В этом руководстве мы покажем вам, как настроить Nginx в качестве обратного прокси для Apache в Debian 11. Для тех из вас, кто не знал, Nginx и Apache являются бесплатными, с открытым исходным кодом и наиболее популярными веб-серверами в мире. мир. Apache известен своей мощностью, а Nginx известен своей скоростью. У обоих есть свои плюсы и минусы. Nginx будет использоваться в качестве внешнего веб-сервера, который будет обрабатывать клиентские запросы и отправлять их в Apache, который будет нашим внутренним веб-сервером, и возвращать запрошенный ответ. Эта процедура позволяет получить различные преимущества от производительности до безопасности.

Настройте Nginx в качестве обратного прокси для Apache в Debian 11 Bullseye

Шаг 1. Перед установкой любого программного обеспечения важно убедиться, что ваша система обновлена, выполнив следующие apt команды в терминале:

Шаг 2. Установка веб-сервера Apache в Debian 11.

Теперь мы устанавливаем веб-сервер Apache в системе Debian, выполнив следующую команду:

Подтвердите сборку и версию Apache:

Перед началом настройки убедитесь, что в вашей системе запущены службы Apache. Выполните следующую команду, чтобы проверить статус служб apache:

Затем отредактируйте файл конфигурации порта Apache:

Найдите и измените следующие строки, чтобы apache работал на порту 8080, доступном только с локального хоста:

Сохраните и закройте файл, затем отредактируйте файл конфигурации Apache по умолчанию:

Измените порт по умолчанию с 80 на 8000, как показано ниже:

Сохраните и закройте файл, когда закончите. Затем перезапустите веб-службу Apache, чтобы применить все изменения конфигурации:

После успешной установки вы сможете просматривать тестовую веб-страницу Apache через свой веб-браузер:

Шаг 3. Установка Nginx в Debian 11.

Теперь мы запускаем следующую команду, чтобы установить Nginx в вашу систему Debian:

После завершения установки запустите Nginx и добавьте его для автоматического запуска при запуске системы, используя:

Затем настройте Nginx в качестве обратного прокси-сервера для передачи входящих запросов на сервер Apache с помощью следующей команды:

Вставьте следующую конфигурацию в свой файл, затем сохраните и выйдите:

Сохраните и закройте файл, затем проверьте Nginx на наличие синтаксических ошибок с помощью следующей команды:

Шаг 4. Протестируйте обратный прокси-сервер.

Поздравляю! Вы успешно настроили обратный прокси-сервер Nginx . Благодарим за использование этого руководства для настройки Nginx в качестве обратного прокси для Apache в Debian 11 Bullseye. Для получения дополнительной помощи или полезной информации мы рекомендуем вам посетить официальный сайт Nginx .

Разберём, что такое Reverse Proxy. А также я покажу как настроить Nginx в качестве Reverse Proxy (обратного прокси сервера).

Теоретическая часть

Иногда бывает нужно чтобы различные url запросы обрабатывались на разных серверах, но первоначально приходили на один сервер. Например вы пробросили порт на своем роутере на один веб-сервер в вашей внутренней сети. Но хотите чтобы каталог /xxx открывался на втором веб-сервере, а /yyy открывался на третьем, и не хотите пробрасывать порты на каждый web-сервер. Получается вот такая схема:

Reverse Proxy

То что мы хотим сделать из сервера web1, называется reverse proxy (обратный прокси).

В то время как forward proxy (прямой прокси) работают от имени клиентов, то есть нам нужно настраивать браузер (клиент), чтобы тот ходил через прямой прокси сервер. Обратные же прокси работают от имени серверов, то есть клиент не знает, что он обращается на прокси сервер.

Reverse proxy принимает запросы от клиентов для того чтобы проксировать их на проксируемые web-сервера (как показано на рисунке).

В качестве обратного прокси сервера для веб серверов может выступать apace или nginx. Есть и другие решения, но в этой статье разберём настройку nginx. На официальном сайте nginx есть небольшой раздел, посвящённый reverse proxy.

Схема нашей лаборатории

Я буду использовать операционную систему Devuan, это облегченный вариант Debian без systemd. Про установку Devuan я уже писал здесь.

У нас будет три сервера:

  • proxy – reverse proxy (ip 192.168.5.82) – установлен nginx;
  • web1 – backend web server (ip 192.168.5.84) – установлен apache2;
  • web2 – backend web server (ip 192.168.5.83) – установлен apache2;

Практическая часть

Настраиваем nginx

Устанавливаем nginx на сервере proxy:

У меня установился nginx такой версией:

Для настройки прокси создадим новый виртуальный хост:

Разбор конфига

На основных настройках я не буду заострять внимание, потому как они не относятся к настройке reverse proxy. Если вкратце там мы указали какие порты слушает наш сервер, корень сайта, индексные страницы и имя сервера.

А следующие строки отвечают за настройку работы буферной памяти для проксируемой информации:

  • proxy_buffering on; – включаем буфер для прокси сервера;
  • proxy_buffer_size 8k; – размер буфера для первой части ответа получаемого от проксируемого сервера, такая часть ответа включает в себя только заголовки и хранится отдельно от остальной информации;
  • proxy_buffers 8 8k; – число и размер буферов для одного соединения, а вот сюда помещается ответ от проксируемого сервера.

Теперь разберем часть где мы указываем что проксировать и куда проксировать:

Отключим конфиг “default“, включим созданный нами конфиг “proxy” и перезагрузим службу сервера:

Настраиваем backend сервера

На обоих серверах проделаем одно и тоже! Во-первых установим apache2, затем создадим новый каталог /var/www/html/test. В этом каталоге сделаем индексную страничку index.html в которую запишем имя сервера. Вдобавок поменяем владельца нового каталога на www-data.

Проделываем следующее на обоих серверах:

Проверка

Используя адрес прокси сервера, откроем xxx:


Используя адрес прокси сервера, откроем yyy:


Как видим у нас открылись разные странички, которые лежат на разных серверах:

Резервирование серверов

Теперь сделаем так, чтобы один и тот же запрос ходил по следующим правилам:

Для этого поправим наш конфиг /etc/nginx/sites-enabled/proxy и перед блоком server добавим блок upstream:

В этом блоке указываем оба web-сервера. При этом webбудет основным сервером. Но если proxy в течении 120 секунд получит три ошибки при обращении к web1, то на 120 секунд все запросы пойдут на web2.

Ниже в блоке server, где мы указывали что на что проксировать (блоки location), поменяем записи. Вместо ip-адреса web-сервера укажем название апстрима, которое мы придумали выше (backend). Второй блок (location /yyy) – удаляем. Получится так:

Полностью конфиг будет выглядеть так:

Проверка резервирования

В браузере, используя адрес прокси сервера, открываем /xxx:


Затем отключаем сервер web1 и обновляем страничку:


Как видим мы перешли на второй сервер. Теперь включим обратно первый сервер и обновим страничку еще раз:


Теперь мы вернулись на первый сервер.

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

Читайте также: