Поставляемые модули#
Модули, поставляемые в составе Nginx, приведены в таблице ниже.
Модуль |
Описание |
|---|---|
|
Позволяет добавлять текст в начало и конец ответа |
|
Отвечает за базовую функциональность Nginx |
|
Реализует авторизацию клиента на основе результата выполнения дополнительного запроса |
|
Упрощает управление файлами на сервере через протокол WebDAV, поддерживая методы |
|
Обеспечивает поддержку псевдо-стриминга для видеофайлов в формате FLV |
|
Распаковывает ответы с |
|
Отдает предварительно сжатые файлы с расширением |
|
Выполняет преобразование изображений форматов JPEG, GIF, PNG, WebP |
|
Поддерживает псевдо-стриминг для файлов в формате MP4 ( |
|
Возвращает случайный файл в качестве индексного при запросе каталога, оканчивающегося на |
|
Заменяет IP-адрес и порт клиента на значения из указанного заголовка |
|
Делит запрос на части, возвращая данные по диапазонам, что улучшает кеширование для больших ответов |
|
Обеспечивает поддержку HTTPS |
|
Предоставляет базовую статистику о состоянии сервера |
|
Заменяет указанную строку в ответе на другую |
|
Добавляет поддержку протокола HTTP/2 |
|
Преобразует XML-документы с использованием XSLT-шаблонов |
|
Обеспечивает защищенное соединение для почтового прокси-сервера через SSL/TLS |
|
Заменяет IP-адрес и порт клиента на значения из заголовка |
|
Поддерживает SSL/TLS для потокового прокси-сервера |
|
Извлекает данные из сообщения |
Подробное описание основных модулей и модулей, реализующих функции безопасности, приведено в следующих разделах.
ngx_http_core_module#
ngx_http_core_module — основной модуль Nginx, отвечающий за базовую функциональность HTTP-сервера.
Он позволяет настроить:
конфигурацию серверов;
обработку запросов;
тайм-ауты и соединения;
обработку ошибок;
логирование;
оптимизацию;
безопасность.
Директивы#
Список директив модуля представлен в таблице ниже.
Синтаксис |
Значение по умолчанию |
Контекст |
Описание |
|---|---|---|---|
|
|
|
Задает использование относительных URL при перенаправлениях, если |
|
|
|
Включает или отключает асинхронный ввод-вывод (AIO) для файлов в FreeBSD и Linux |
|
|
|
Устанавливает задержку для обработки неавторизованных запросов с кодом |
|
|
|
Управляет использованием chunked transfer encoding в HTTP/1.1 |
|
|
|
Устанавливает размер буфера для чтения тела запроса клиента. Если данные превышают размер буфера, они записываются во временный файл |
|
|
|
Определяет, нужно ли сохранять тело запроса клиента в файл |
|
|
|
Определяет, нужно ли сохранять тело запроса клиента в одном буфере |
|
|
|
Задает каталог для временных файлов с телами запросов клиентов. Поддерживает иерархию подкаталогов до трех уровней ( |
|
|
|
Устанавливает тайм-аут |
|
|
|
Устанавливает размер буфера |
|
|
|
Устанавливает тайм-аут |
|
|
|
Устанавливает максимальный допустимый размер |
|
|
|
Настраивает выделение памяти для соединений |
|
|
|
Указывает MIME-тип по умолчанию для ответов, если он не задан явно |
|
|
|
Включает использование флагов |
|
|
|
Устанавливает выравнивание для |
|
|
|
Управляет обработкой символических ссылок при открытии файлов |
|
— |
|
Указывает URI для отображения при возникновении ошибок. В URI можно использовать переменные |
|
|
|
Включает или отключает автоматическую генерацию заголовка |
|
— |
|
Определяет контекст для настройки HTTP-сервера |
|
|
|
Управляет сравнением времени модификации ответа с заголовком |
|
|
|
Задает игнорирование заголовков с недопустимыми именами, если включено |
|
— |
|
Указывает, что |
|
|
|
Отключает Keep-alive для определенных браузеров |
|
|
|
Устанавливает максимальное количество запросов на одно Keep-alive-соединение |
|
|
|
Устанавливает максимальное время |
|
|
|
Указывает время |
|
|
|
Определяет количество |
|
— |
|
Ограничивает доступные HTTP-методы |
|
|
|
Устанавливает ограничение скорости |
|
|
|
Указывает объем данных |
|
|
|
Управляет процессом закрытия соединений с клиентами |
|
|
|
Устанавливает максимальное время |
|
|
|
Указывает время |
|
|
|
Указывает адрес |
|
— |
|
Настраивает обработку запросов в зависимости от URI |
|
|
|
Включает или отключает логирование ошибок о ненайденных файлах в |
|
|
|
Включает или отключает логирование подзапросов в |
|
— |
|
Ограничивает максимальное количество диапазонов в запросах с указанием диапазонов байт |
|
|
|
Управляет объединением нескольких слешей ( |
|
|
|
Добавляет комментарии к ответам для MSIE, чтобы увеличить их размер до 512 байт |
|
|
|
Использует |
|
|
|
Настраивает кеш для хранения информации о файлах, включая их размеры, время модификации и ошибки поиска |
|
|
|
Включает или отключает кеширование ошибок при поиске файлов |
|
|
|
Устанавливает минимальное количество обращений к файлу для сохранения его дескриптора в кеше |
|
|
|
Определяет время, через которое проверяется актуальность информации в кеше |
|
|
|
Устанавливает количество и размер буферов для чтения ответов с диска |
|
|
|
Управляет включением порта в URL при перенаправлениях |
|
|
|
Откладывает отправку данных клиенту до накопления указанного объема данных |
|
|
|
Устанавливает размер предчтения для файлов. Используется |
|
|
|
Разрешает или запрещает множественные перенаправления через |
|
|
|
Настраивает размер пула для хранения запросов |
|
|
|
Управляет сбросом соединений по тайм-ауту |
|
— |
|
Настраивает DNS-resolver для преобразования имен в адреса |
|
|
|
Устанавливает тайм-аут для DNS-запросов |
|
|
|
Указывает корневой каталог для обработки запросов |
|
|
|
Определяет условия успешного выполнения запроса |
|
|
|
Минимизирует количество операций отправки данных на клиентских сокетах |
|
|
|
Устанавливает тайм-аут между операциями записи при передаче ответа клиенту |
|
|
|
Включает или выключает использование |
|
|
|
Ограничивает объем данных, передаваемых за один вызов |
|
— |
|
Определяет настройки виртуального сервера. Виртуальные серверы могут быть настроены как на основе IP-адресов, так и на основе имен (через поле |
|
|
|
Указывает имена виртуальных серверов, на которые должны быть направлены запросы |
|
|
|
Определяет, будет ли основное имя сервера (из директивы |
|
|
|
Задает размер корзины в хеш-таблицах для имен серверов. Размер зависит от кеша процессора |
|
|
|
Устанавливает максимальный размер хеш-таблиц для имен серверов |
|
|
|
Управляет отображением информации о версии Nginx на страницах ошибок и в заголовке |
|
|
|
Определяет размер буфера для хранения тела ответа подзапроса |
|
|
|
Управляет параметром |
|
|
|
Управляет параметром |
|
— |
|
Проверяет наличие указанных файлов и возвращает первый найденный или перенаправляет на указанный URI |
|
|
|
Сопоставляет расширения файлов с MIME-типами ответов |
|
|
|
Задает размер корзины в хеш-таблицах для типов |
|
|
|
Устанавливает максимальный размер хеш-таблиц для типов |
|
|
|
Разрешает или запрещает использование символов подчеркивания ( |
|
|
|
Определяет размер корзины в хеш-таблице для переменных |
|
|
|
Устанавливает максимальный размер хеш-таблицы для переменных |
Встроенные переменные#
Модуль ngx_http_core_module предоставляет набор встроенных переменных, например:
$bytes_sent— количество байт, переданных клиенту;$connection— уникальный номер соединения;$hostname— имя хоста сервера;$https— значениеon, если используется SSL-соединение, иначе пустая строка;$nginx_version— текущая версия Nginx.
ngx_http_auth_request_module#
Модуль ngx_http_auth_request_module обеспечивает авторизацию клиента на основе результата подзапроса. Если подзапрос возвращает код ответа 2xx, доступ разрешается. Если подзапрос возвращает код 401 или 403, доступ блокируется с соответствующим кодом ошибки. Все остальные коды ответа, полученные от подзапроса, интерпретируются как ошибочные.
Пример конфигурации#
location /private/ {
auth_request /auth;
...
}
location = /auth {
proxy_pass ...
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
Директивы#
Список директив модуля представлен в таблице ниже.
Синтаксис |
Значение по умолчанию |
Контекст |
Описание |
|---|---|---|---|
|
|
|
Включает авторизацию на основне результата подзапроса и задает URI для отправки подзапроса |
|
- |
|
Задает значение |
ngx_http_ssl_module#
Модуль ngx_http_ssl_module реализует поддержку протокола HTTPS.
Важно
Для сборки и работы этого модуля нужна библиотека OpenSSL.
Пример конфигурации#
worker_processes auto;
http {
...
server {
listen 443 ssl;
keepalive_timeout 70;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /usr/local/nginx/conf/cert.pem;
ssl_certificate_key /usr/local/nginx/conf/cert.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
...
}
Директивы#
Список директив модуля представлен в таблице ниже.
Синтаксис |
Значение по умолчанию |
Контекст |
Описание |
|---|---|---|---|
|
|
|
Устанавливает размер буфера для передачи данных |
|
— |
|
Задает путь к файлу сертификата в формате PEM для виртуального сервера |
|
— |
|
Указывает путь к файлу с приватным ключом в формате PEM для виртуального сервера |
|
|
|
Определяет список допустимых шифров в формате, совместимом с OpenSSL |
|
— |
|
Задает файл с сертификатами доверенных центров сертификации (CA) в формате PEM для проверки клиентских сертификатов |
|
— |
|
Позволяет задавать пользовательские команды конфигурации OpenSSL |
|
— |
|
Указывает файл со списком отозванных сертификатов (CRL) в формате PEM для проверки клиентских сертификатов |
|
— |
|
Задает файл с параметрами для DHE-шифрования |
|
|
|
Включает или отключает использование ранних данных (early data) в протоколе TLS 1.3 |
|
|
|
Задает кривую |
|
— |
|
Включает запись SSL-ключей клиентских соединений в указанный файл |
|
|
|
Активирует проверку статуса сертификатов через OCSP. Параметр |
|
|
|
Настраивает кеш для хранения результатов проверки статуса сертификатов через OCSP |
|
— |
|
Переопределяет URL сервера OCSP для проверки статуса сертификатов |
|
— |
|
Указывает файл с паролями для доступа к приватным ключам, где каждый пароль записан на отдельной строке |
|
|
|
Устанавливает приоритет шифров, предложенных сервером, над клиентскими при использовании SSLv3 и TLS |
|
|
|
Разрешает использование указанных протоколов. Доступные опции зависят от версии OpenSSL |
|
|
|
Если включено, отклоняет попытки установления SSL-соединения в блоке |
|
|
|
Настраивает тип и размер кеша для хранения параметров SSL-сессий |
|
— |
|
Указывает файл с ключом для шифрования и дешифрования TLS session tickets |
|
|
|
Включает или отключает возможность возобновления сессий с использованием TLS session tickets |
|
|
|
Устанавливает срок действия параметров SSL-сессии, в течение которого клиент может их повторно использовать |
|
|
|
Включает или отключает прикрепление OCSP-ответов к сертификатам сервера |
|
— |
|
Задает получение OCSP-ответов из файла |
|
— |
|
Переопределяет URL сервера OCSP, указанный в расширении сертификата |
|
|
|
Включает или отключает проверку сервером OCSP-ответов |
|
— |
|
Задает файл с сертификатами доверенных центров сертификации (CA) в формате PEM для проверки клиентских сертификатов и OCSP-ответов |
|
|
|
Включает проверку клиентских сертификатов. Результат проверки доступен через переменную |
|
|
|
Настраивает глубину проверки в цепочке клиентских сертификатов |
Встроенные переменные#
Модуль ngx_http_ssl_module предоставляет набор встроенных переменных, таких как:
$ssl_cipher— название алгоритма шифрования, используемого в текущем SSL-соединении;$ssl_protocol— версия протокола, применяемого для SSL-соединения;$ssl_client_verify— результат проверки клиентского сертификата:SUCCESS- в случае успеха,FAILED:reason- при ошибке,NONE— если сертификат не был предоставлен;$ssl_session_id— идентификатор сессии текущего SSL-соединения;$ssl_session_reused—r— если сессия была повторно использована,.— если нет;$ssl_server_name— имя сервера, запрошенное через SNI (Server Name Indication);$ssl_client_cert— клиентский сертификат в формате PEM для установленного SSL-соединения;$ssl_client_serial— ссерийный номер клиентского сертификата, используемого в SSL-соединении;
и другие.