NGINX с обратным прокси ⋆ ALexHost SRL

Проверьте свои навыки на всех наших услугах хостинга и получите скидку 15%!.

Используйте код при регистрации:

Skills
18.12.2024
No categories

NGINX с обратным прокси

Введение в NGINX и обратный прокси-сервер

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

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

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

  • Балансировка нагрузки: Распределение клиентских запросов между несколькими серверами, что предотвращает перегрузку одного сервера и повышает общую производительность.
  • Безопасность и анонимность: скрытие IP-адресов внутренних серверов, что защищает их от прямого доступа в Интернет.
  • Кэширование: кэширование статического содержимого для ускорения доставки часто запрашиваемых ресурсов.
  • Завершение работы SSL: Передача шифрования и дешифрования SSL/TLS обратному прокси, что снижает нагрузку на внутренние серверы.

Почему стоит использовать NGINX в качестве обратного прокси?

Легкий дизайн и неблокирующая архитектура NGINX делают его отличным выбором для обратного прокси. Он может обрабатывать большое количество одновременных соединений при низком потреблении ресурсов, что делает его идеальным для сайтов с высоким трафиком или требующих высокой доступности. Некоторые преимущества использования NGINX в качестве обратного прокси включают:

  • Высокая производительность: NGINX разработан для эффективной обработки большого количества соединений, что делает его идеальным для сред, требующих быстрого времени запроса-ответа.
  • Гибкость: NGINX позволяет легко настраивать несколько внутренних серверов, обеспечивая сложную балансировку нагрузки и обход отказов.
  • Масштабируемость: По мере роста трафика вы можете добавлять дополнительные внутренние серверы и балансировать нагрузку без каких-либо сбоев.
  • Функции безопасности: NGINX может обеспечивать HTTPS-соединения, блокировать определенные IP-адреса и управлять аутентификацией.

Как настроить NGINX в качестве обратного прокси-сервера

Настройка NGINX в качестве обратного прокси подразумевает настройку NGINX на прослушивание входящих HTTP- или HTTPS-запросов и их перенаправление на один или несколько внутренних серверов. Вот пошаговое руководство для начала работы:

Шаг 1: Установите NGINX

Если вы еще не установили NGINX на свой сервер, начните с его установки. Для большинства дистрибутивов Linux вы можете использовать следующую команду:

# Для Debian/Ubuntu
sudo apt update
sudo apt install nginx
# Для CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx

После установки запустите службу NGINX:

sudo systemctl start nginx

Шаг 2: Базовая конфигурация обратного прокси NGINX

Чтобы настроить базовый обратный прокси, необходимо отредактировать файл конфигурации NGINX, обычно расположенный по адресу /etc/nginx/nginx.conf, или создать новый файл конфигурации внутри /etc/nginx/conf.d/. Ниже приведена простая конфигурация для обратного проксирования запросов к внутреннему серверу:

server {
listen 80;
имя_сервера example.com;
location / {
proxy_pass http://backend_server;
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;
}
}

  • listen 80;: Указывает NGINX слушать HTTP-запросы на порту 80.
  • имя_сервера: Замените example.com на ваш домен или IP-адрес.
  • proxy_pass: Указывает адрес внутреннего сервера, на который должны перенаправляться запросы.
  • proxy_set_header: Устанавливает дополнительные заголовки для передачи на внутренний сервер, которые могут быть полезны для ведения логов и безопасности.

Шаг 3: Обратный прокси для нескольких внутренних серверов

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

upstream backend {
сервер backend1.example.com;
сервер backend2.example.com;
сервер backend3.example.com;
}
сервер {
listen 80;
имя_сервера example.com;
location / {
proxy_pass http://backend;
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;
}
}

Эта конфигурация распределяет запросы между backend1.example.com, backend2.example.com и backend3.example.com по принципу round-robin.

Шаг 4: Включите SSL для безопасных подключений

Чтобы защитить связь между клиентами и обратным прокси NGINX, вы можете включить SSL/TLS. Вам понадобится SSL-сертификат, который можно получить у таких провайдеров, как Let’s Encrypt:

сервер {
listen 443 ssl;
имя_сервера example.com;
ssl_certificate /path/to/ssl_certificate.crt;
ssl_certificate_key /path/to/ssl_certificate_key.key;
расположение / {
proxy_pass http://backend_server;
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;
}
}

Не забудьте заменить пути к SSL-сертификату и ключу. При такой настройке NGINX будет разрывать SSL-соединение и перенаправлять трафик на внутренний сервер по HTTP.

Шаг 5: Тестирование и перезапуск NGINX

После внесения изменений в конфигурацию NGINX важно проверить ее на наличие синтаксических ошибок:

sudo nginx -t

Если ошибок не обнаружено, перезапустите NGINX, чтобы применить изменения:

sudo systemctl restart nginx

Расширенная конфигурация обратного прокси-сервера NGINX

Для более продвинутых настроек вы можете настроить кэширование, переписывание URL и пользовательские алгоритмы балансировки нагрузки. Вот несколько дополнительных опций:

  • Кэширование: Чтобы включить кэширование, добавьте директивы proxy_cache в блок location.
  • Пользовательская балансировка нагрузки: Используйте различные стратегии балансировки нагрузки, например least_conn для распределения трафика на внутренний сервер с наименьшим количеством активных соединений.
  • Проверки работоспособности: Настройте проверку работоспособности, чтобы NGINX направлял трафик только на здоровые бэкенд-серверы с помощью proxy_next_upstream.

Заключение

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

С помощью этого руководства вы сможете настроить и оптимизировать NGINX в качестве обратного прокси для ваших нужд.

Проверьте свои навыки на всех наших услугах хостинга и получите скидку 15%!.

Используйте код при регистрации:

Skills