user

Авторизация

Добро пожаловать!

Регистрация

Graf

Кодинг

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

 NGINX — это высокопроизводительный модульный сервер, который можно использовать, например, в качестве:

  • веб сервер
  • Обратный прокси
  • Балансировщик нагрузки

 В этой статье описывается, как работать с NGINX в этих сценариях.

Установка и подготовка NGINX

 Используя конфигурацию по умолчанию, NGINX работает как веб-сервер на порту 80 и предоставляет содержимое из /usr/share/nginx/html/каталога.

Процедура:

  1. Отобразите доступные потоки модуля NGINX:
  1. Если вы хотите установить поток, отличный от используемого по умолчанию, выберите поток:
  1. Установите nginx пакет:
  1. Откройте порты, на которых NGINX должен предоставлять свои услуги в брандмауэре. Например, чтобы открыть порты по умолчанию для HTTP (порт 80) и HTTPS (порт 443) в firewalld, введите:
  1. Включите nginx автоматический запуск службы при загрузке системы:
  1. При желании запустите nginx службу:

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

Этапы проверки

  1. Используйте yum утилиту, чтобы убедиться, что nginx пакет установлен:
  1. Убедитесь, что порты, на которых NGINX должен предоставлять свои услуги, открыты в firewalld:
  1. Убедитесь, что nginx служба включена:

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

 По умолчанию NGINX действует как веб-сервер, который предоставляет клиентам одинаковый контент для всех доменных имен, связанных с IP-адресами сервера. Эта процедура объясняет, как настроить NGINX:

  • Для обслуживания запросов к example.comдомену с содержимым из /var/www/example.com/ каталога
  • Для обслуживания запросов к example.net домену с содержимым из /var/www/example.net/ каталога
  • Обслуживать все остальные запросы, например, к IP-адресу сервера или к другим доменам, связанным с IP-адресом сервера, с контентом из /usr/share/nginx/html/ каталога

Процедура:

  1. Отредактируйте /etc/nginx/nginx.conf файл:

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

 Эти параметры настраивают следующее:

  • Директива listen определяет, какие IP-адреса и порты прослушивает служба. В этом случае NGINX прослушивает порт 80 на всех адресах IPv4 и IPv6. Параметр default_server указывает, что NGINX использует этот server блок по умолчанию для запросов, соответствующих IP-адресам и портам.
  • Параметр server_name определяет имена хостов, за которые serverотвечает данный блок. Параметр server_name настраивает NGINX для принятия любого имени хоста для этого server блока.
  • Директива root устанавливает путь к веб-контенту для этого server блока.

 Добавьте к блоку аналогичный server блок для example.com домена http:

  • Директива access_log определяет отдельный файл журнала доступа для этого домена.
  • Директива error_log определяет отдельный файл журнала ошибок для этого домена.

 Добавьте к блоку аналогичный server блок для example.net домена http:

  1. Создайте корневые каталоги для обоих доменов:
  1. Установите httpd_sys_content_t контекст для обоих корневых каталогов:

 Эти команды устанавливают httpd_sys_content_t контекст для каталогов /var/www/example.com/ и ./var/www/example.net/policycoreutils-python-utils. Обратите внимание, что для запуска restorecon команд необходимо установить пакет.

  1. Создайте каталоги журналов для обоих доменов:
  1. Перезапустите nginx службу:

Этапы проверки:

  1. Создайте отдельный файл примера в корне документа каждого виртуального хоста:
  1. Используйте браузер и подключитесь к http://example.com. Веб-сервер показывает пример содержимого из /var/www/example.com/index.html файла.
  2. Используйте браузер и подключитесь к http://example.net. Веб-сервер показывает пример содержимого из /var/www/example.net/index.html файла.
  3. Используйте браузер и подключитесь к http://IP_address_of_the_server . Веб-сервер показывает пример содержимого из файла http://IP_address_of_the_server/usr/share/nginx/ html/index.html

Добавление шифрования TLS на веб-сервер NGINX

 В этом разделе описывается, как включить шифрование TLS на веб-сервере NGINX для example.com домена.

Процедура:

  1. Отредактируйте /etc/nginx/nginx.conf файл и добавьте в блок в конфигурации следующий server блок :http

 Из соображений безопасности настройте, чтобы только rootпользователь мог получить доступ к файлу закрытого ключа:

Предупреждение
 Если к закрытому ключу получили доступ неавторизованные пользователи, отзовите сертификат, создайте новый закрытый ключ и запросите новый сертификат. В противном случае соединение TLS больше не является безопасным.

  1. Перезапустите nginx службу:

Этапы проверки:

  • Используйте браузер и подключитесь к https://example.com

Настройка NGINX в качестве обратного прокси для HTTP-трафика

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

 В этой процедуре объясняется, как перенаправить трафик в /example каталог на веб-сервере по URL-адресу https://example.com.

Процедура:

  1. Отредактируйте /etc/nginx/nginx.conf файл и добавьте следующие настройки в serverблок, который должен предоставлять обратный прокси:

 Блок location определяет, что NGINX передает все запросы в /example каталоге в https://example.com.

  1. Установите httpd_can_network_connect логический параметр SELinux, 1 чтобы указать, что SELinux позволяет NGINX пересылать трафик:
  1. Перезапустите nginx службу:

Этапы проверки:

  • Используйте браузер, подключитесь к http://host_name/example и отобразите содержимое https://example.com.

Настройка NGINX в качестве балансировщика нагрузки HTTP

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

Процедура:

  1. Отредактируйте /etc/nginx/nginx.conf файл и добавьте следующие настройки:

Директива least_conn в названной группе хостов backend определяет, что NGINX отправляет запросы на server1.example.com или server2.example.com, в зависимости от того, какой хост имеет наименьшее количество активных подключений. NGINX используется server3.example.com только в качестве резервного на тот случай, если два других хоста будут недоступны. Если для proxy_pass директивы задано значение http://backend, NGINX действует как обратный прокси-сервер и использует группу backend хостов для распределения запросов на основе настроек этой группы. Вместо least_conn метода балансировки нагрузки можно указать:

  • Нет метода циклического перебора и равномерного распределения запросов по серверам.
  • ip_hash отправлять запросы с одного адреса клиента на тот же сервер на основе хэша, рассчитанного из первых трех октетов адреса IPv4 или всего адреса IPv6 клиента.
  • hash для определения сервера на основе определяемого пользователем ключа, который может быть строкой, переменной или их комбинацией. Параметр consistent настраивает, что NGINX распределяет запросы по всем серверам на основе заданного пользователем значения хешированного ключа.
  • random для отправки запросов на случайно выбранный сервер.

Перезапустите nginx службу: