Модуль ngx_http_uwsgi_module
- Пример конфигурации
- Директивы
- uwsgi_bind
- uwsgi_buffer_size
- uwsgi_buffering
- uwsgi_buffers
- uwsgi_busy_buffers_size
- uwsgi_cache
- uwsgi_cache_background_update
- uwsgi_cache_bypass
- uwsgi_cache_key
- uwsgi_cache_lock
- uwsgi_cache_lock_age
- uwsgi_cache_lock_timeout
- uwsgi_cache_max_range_offset
- uwsgi_cache_methods
- uwsgi_cache_min_uses
- uwsgi_cache_path
- uwsgi_cache_purge
- uwsgi_cache_revalidate
- uwsgi_cache_use_stale
- uwsgi_cache_valid
- uwsgi_connect_timeout
- uwsgi_force_ranges
- uwsgi_hide_header
- uwsgi_ignore_client_abort
- uwsgi_ignore_headers
- uwsgi_intercept_errors
- uwsgi_limit_rate
- uwsgi_max_temp_file_size
- uwsgi_modifier1
- uwsgi_modifier2
- uwsgi_next_upstream
- uwsgi_next_upstream_timeout
- uwsgi_next_upstream_tries
- uwsgi_no_cache
- uwsgi_param
- uwsgi_pass
- uwsgi_pass_header
- uwsgi_pass_request_body
- uwsgi_pass_request_headers
- uwsgi_read_timeout
- uwsgi_request_buffering
- uwsgi_send_timeout
- uwsgi_socket_keepalive
- uwsgi_ssl_certificate
- uwsgi_ssl_certificate_key
- uwsgi_ssl_ciphers
- uwsgi_ssl_conf_command
- uwsgi_ssl_crl
- uwsgi_ssl_name
- uwsgi_ssl_password_file
- uwsgi_ssl_protocols
- uwsgi_ssl_server_name
- uwsgi_ssl_session_reuse
- uwsgi_ssl_trusted_certificate
- uwsgi_ssl_verify
- uwsgi_ssl_verify_depth
- uwsgi_store
- uwsgi_store_access
- uwsgi_temp_file_write_size
- uwsgi_temp_path
Модуль ngx_http_uwsgi_module позволяет передавать запросы на сервер uwsgi.
Пример конфигурации
location / {
include uwsgi_params;
uwsgi_pass localhost:9000;
}
Директивы
| Синтаксис: | uwsgi_bind
address
[transparent] |
off; |
|---|---|
| По умолчанию: | — |
| Контекст: | http, server, location |
Устанавливает исходящее соединение с сервером uwsgi, начинающееся со специфицированного локального IP-адреса с опциональным портом (1.11.2). Значение параметра может содержать переменные (1.3.12). Специальное значение off (1.3.12) отменяет действие директивы uwsgi_bind , унаследованной от предыдущего уровня конфигурации, что позволяет системе автоматически назначить локальный IP-адрес и порт.
Параметр transparent (1.11.0) позволяет исходящим соединениям с сервером uwsgi начинаться с нелокального IP-адреса, например, с реального IP-адреса клиента:
uwsgi_bind $remote_addr transparent;
Для работы этого параметра, обычно, необходимо запускать процессы nginx с привилегиями суперпользователя. На Linux это не требуется (1.13.8), так как если параметр transparent задан, процессы рабочих потоков унаследуют возможность CAP_NET_RAW от главного процесса. Также необходимо настроить таблицу маршрутизации ядра для перехвата сетевого трафика от сервера uwsgi.
| Синтаксис: | uwsgi_buffer_size size; |
|---|---|
| По умолчанию: | uwsgi_buffer_size 4k|8k; |
| Контекст: | http, server, location |
Устанавливает размер буфера, используемого для чтения первой части ответа, полученного от сервера uwsgi. Эта часть обычно содержит небольшой заголовок ответа. По умолчанию размер буфера равен одной странице памяти. Это либо 4К, либо 8К, в зависимости от платформы. Его можно сделать меньше.
| Синтаксис: | uwsgi_buffering on | off; |
|---|---|
| По умолчанию: | uwsgi_buffering on; |
| Контекст: | http, server, location |
Включает или отключает буферизацию ответов от сервера uwsgi.
При включенной буферизации nginx получает ответ от сервера uwsgi как можно скорее, сохраняя его в буферы, заданные директивами uwsgi_buffer_size и uwsgi_buffers. Если весь ответ не помещается в память, его часть может быть сохранена во временный файл на диске. Запись во временные файлы контролируется директивами uwsgi_max_temp_file_size и uwsgi_temp_file_write_size.
При отключенной буферизации ответ передается клиенту синхронно, сразу по мере получения. nginx не будет пытаться прочитать весь ответ от сервера uwsgi. Максимальный размер данных, которые nginx может получить от сервера за раз, устанавливается директивой uwsgi_buffer_size.
Буферизация также может быть включена или отключена, передав “yes” или “no” в поле заголовка ответа “X-Accel-Buffering”. Эта возможность может быть отключена с помощью директивы uwsgi_ignore_headers.
| Синтаксис: | uwsgi_buffers number size; |
|---|---|
| По умолчанию: | uwsgi_buffers 8 4k|8k; |
| Контекст: | http, server, location |
Устанавливает количество и размер буферов, используемых для чтения ответа от сервера uwsgi для одного соединения. По умолчанию размер буфера равен одной странице памяти. Это либо 4К, либо 8К, в зависимости от платформы.
| Синтаксис: | uwsgi_busy_buffers_size size; |
|---|---|
| По умолчанию: | uwsgi_busy_buffers_size 8k|16k; |
| Контекст: | http, server, location |
При включенной буферизации ответов от сервера uwsgi ограничивает общее количество занятых буферов, которые могут быть заняты отправкой ответа клиенту, пока ответ не будет полностью прочитан. Тем временем, остальные буферы могут быть использованы для чтения ответа и, при необходимости, буферизации части ответа во временный файл. По умолчанию, size ограничено размером двух буферов, заданных директивами uwsgi_buffer_size и uwsgi_buffers.
| Синтаксис: | uwsgi_cache zone | off; |
|---|---|
| По умолчанию: | uwsgi_cache off; |
| Контекст: | http, server, location |
Определяет зону общей памяти, используемую для кэширования. Одну и ту же зону можно использовать в нескольких местах. Значение параметра может содержать переменные (1.7.9). Параметр off отключает кэширование, унаследованное от предыдущего уровня конфигурации.
| Синтаксис: | uwsgi_cache_background_update on | off; |
|---|---|
| По умолчанию: | uwsgi_cache_background_update off; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.11.10.
Позволяет запустить фоновый подзапрос для обновления истекшего элемента кэша, в то время как клиенту возвращается устаревший кэшированный ответ. Обратите внимание, что необходимо разрешить использование устаревшего кэшированного ответа при его обновлении.
| Синтаксис: | uwsgi_cache_bypass string ...; |
|---|---|
| По умолчанию: | — |
| Контекст: | http, server, location |
Определяет условия, при которых ответ не будет взят из кэша. Если хотя бы одно строковое значение параметра не пустое и не равно “0”, то ответ не будет взят из кэша:
uwsgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment; uwsgi_cache_bypass $http_pragma $http_authorization;
Может использоваться вместе с директивой uwsgi_no_cache.
| Синтаксис: | uwsgi_cache_key string; |
|---|---|
| По умолчанию: | — |
| Контекст: | http, server, location |
Определяет ключ для кэширования, например
uwsgi_cache_key localhost:9000$request_uri;
| Синтаксис: | uwsgi_cache_lock on | off; |
|---|---|
| Значение по умолчанию: | uwsgi_cache_lock off; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.1.12.
При включении, только один запрос за раз будет разрешен для заполнения нового элемента кэша, идентифицированного по директиве uwsgi_cache_key путём передачи запроса uwsgi серверу. Другие запросы к тому же элементу кэша будут ждать ответа в кэше или освобождения блокировки кэша для этого элемента, до времени, установленного директивой uwsgi_cache_lock_timeout.
| Синтаксис: | uwsgi_cache_lock_age time; |
|---|---|
| Значение по умолчанию: | uwsgi_cache_lock_age 5s; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.7.8.
Если последний запрос, переданный uwsgi серверу для заполнения нового элемента кэша, не завершился в течение указанного time, может быть передан ещё один запрос uwsgi серверу.
| Синтаксис: | uwsgi_cache_lock_timeout time; |
|---|---|
| Значение по умолчанию: | uwsgi_cache_lock_timeout 5s; |
| Контекст: | http, server, location |
Устанавливает таймаут для uwsgi_cache_lock. Когда time истекает, запрос передаётся uwsgi серверу, однако ответ не кэшируется.
До версии 1.7.8, ответ мог кэшироваться.
| Синтаксис: | uwsgi_cache_max_range_offset number; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.11.6.
Устанавливает смещение в байтах для запросов с диапазоном байтов. Если диапазон выходит за пределы смещения, запрос с диапазоном будет передан uwsgi серверу, и ответ не будет кэшироваться.
| Синтаксис: | uwsgi_cache_methods
GET |
HEAD |
POST
...; |
|---|---|
| Значение по умолчанию: | uwsgi_cache_methods GET HEAD; |
| Контекст: | http, server, location |
Если метод запроса клиента указан в этой директиве, то ответ будет кэшироваться. Методы “GET” и “HEAD” всегда добавляются в список, хотя рекомендуется указывать их явно. См. также директиву uwsgi_no_cache.
| Синтаксис: | uwsgi_cache_min_uses number; |
|---|---|
| Значение по умолчанию: | uwsgi_cache_min_uses 1; |
| Контекст: | http, server, location |
Устанавливает number запросов, после которого ответ будет кэшироваться.
| Синтаксис: | uwsgi_cache_path
path
[levels=levels]
[use_temp_path=on|off]
keys_zone=name:size
[inactive=time]
[max_size=size]
[min_free=size]
[manager_files=number]
[manager_sleep=time]
[manager_threshold=time]
[loader_files=number]
[loader_sleep=time]
[loader_threshold=time]
[purger=on|off]
[purger_files=number]
[purger_sleep=time]
[purger_threshold=time]; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | http |
Устанавливает путь и другие параметры кэша. Данные кэша хранятся в файлах. Имя файла в кэше является результатом применения функции MD5 к ключа кэша. Параметр levels определяет уровни иерархии кэша: от 1 до 3, каждый уровень принимает значения 1 или 2. Например, в следующей конфигурации
uwsgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
имена файлов в кэше будут выглядеть так:
/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
Кэшированный ответ сначала записывается во временный файл, а затем файл переименовывается. Начиная с версии 0.8.9, временные файлы и кэш могут быть размещены на разных файловых системах. Однако, следует учитывать, что в этом случае файл копируется между двумя файловыми системами вместо операции переименования. Поэтому рекомендуется размещать кэш и каталог временных файлов на одной файловой системе. Каталог временных файлов устанавливается на основе параметра use_temp_path (1.7.10). Если этот параметр опущен или установлен в значение on, будет использоваться каталог, установленный директивой uwsgi_temp_path для данного расположения. Если значение установлено в off, временные файлы будут размещены непосредственно в каталоге кэша.
Кроме того, все активные ключи и информация о данных хранятся в области общей памяти, чьи name и size конфигурируются параметром keys_zone. Одна мегабайтная область может хранить около 8 тысяч ключей.
В рамках коммерческой подписки область общей памяти также хранит расширенную информацию о кэше (ngx_http_api_module), поэтому для того же количества ключей необходимо указать больший размер области. Например, одна мегабайтная область может хранить около 4 тысяч ключей.
Данные кэша, к которым не обращались в течение времени, указанного параметром inactive, удаляются из кэша независимо от их актуальности. По умолчанию inactive установлен на 10 минут.
Специальный процесс «менеджера кэша» следит за максимальным размером кэша, установленным параметром max_size, и минимальным количеством свободного места, установленным параметром min_free (1.19.1) на файловой системе с кэшем. При превышении размера или недостатке свободного места, он удаляет наименее часто используемые данные. Данные удаляются итерациями, настроенными параметрами manager_files, manager_threshold, и manager_sleep (1.11.5). Во время одной итерации не более manager_files элементов удаляются (по умолчанию 100). Продолжительность одной итерации ограничена параметром manager_threshold (по умолчанию 200 миллисекунд). Между итерациями делается пауза, настроенная параметром manager_sleep (по умолчанию 50 миллисекунд).
Через минуту после запуска активируется специальный процесс «загрузчика кэша». Он загружает информацию о ранее кэшированных данных, хранящихся на файловой системе, в зону кэша. Загрузка также выполняется итерациями. Во время одной итерации не более loader_files элементов загружаются (по умолчанию 100). Кроме того, продолжительность одной итерации ограничена параметром loader_threshold (по умолчанию 200 миллисекунд). Между итерациями делается пауза, настроенная параметром loader_sleep (по умолчанию 50 миллисекунд).
Дополнительно доступны следующие параметры в рамках нашей коммерческой подписки:
-
purger=on|off - Указывает, будут ли удалены из диска записи кэша, соответствующие маске ключа, очистителем кэша (1.7.12). Установка параметра в
on(по умолчаниюoff) активирует процесс «очистителя кэша», который постоянно проходит по всем записям кэша и удаляет записи, соответствующие маске ключа. -
purger_files=number - Устанавливает количество элементов, которые будут сканироваться во время одной итерации (1.7.12). По умолчанию,
purger_filesустановлено в 10. -
purger_threshold=number - Устанавливает продолжительность одной итерации (1.7.12). По умолчанию
purger_thresholdустановлено в 50 миллисекунд. -
purger_sleep=number - Устанавливает паузу между итерациями (1.7.12). По умолчанию
purger_sleepустановлено в 50 миллисекунд.
В версиях 1.7.3, 1.7.7 и 1.11.10 формат заголовка кэша был изменён. Ранее кэшированные ответы будут считаться недействительными после обновления до новой версии nginx.
| Синтаксис: | uwsgi_cache_purge string ...; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.5.7.
Определяет условия, при которых запрос будет считаться запросом на очистку кэша. Если хотя бы одно значение строковых параметров не пусто и не равно “0”, то запись кэша с соответствующим ключом кэша удаляется. Результат успешной операции обозначается возвращением ответа 204 (No Content).
Если ключ кэша запроса очистки заканчивается звёздочкой (“*”), все записи кэша, соответствующие маске ключа, будут удалены из кэша. Однако эти записи останутся на диске до тех пор, пока они не будут удалены из-за неактивности, или обработаны очистителем кэша (1.7.12), или клиент не попытается получить к ним доступ.
Пример конфигурации:
uwsgi_cache_path /data/nginx/cache keys_zone=cache_zone:10m;
map $request_method $purge_method {
PURGE 1;
default 0;
}
server {
...
location / {
uwsgi_pass backend;
uwsgi_cache cache_zone;
uwsgi_cache_key $uri;
uwsgi_cache_purge $purge_method;
}
}
Эта функциональность доступна в рамках нашей коммерческой подписки.
| Синтаксис: | uwsgi_cache_revalidate on | off; |
|---|---|
| Значение по умолчанию: | uwsgi_cache_revalidate off; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.5.7.
Включает перепроверку устаревших элементов кэша с использованием условных запросов с заголовками «If-Modified-Since» и «If-None-Match».
| Синтаксис: | uwsgi_cache_use_stale
error |
timeout |
invalid_header |
updating |
http_500 |
http_503 |
http_403 |
http_404 |
http_429 |
off
...; |
|---|---|
| Значение по умолчанию: | uwsgi_cache_use_stale off; |
| Контекст: | http, server, location |
Определяет случаи, когда можно использовать устаревший кэшированный ответ при возникновении ошибки во время связи с uwsgi сервером. Параметры директивы соответствуют параметрам директивы uwsgi_next_upstream.
Параметр error также разрешает использование устаревшего кэшированного ответа, если сервер uwsgi для обработки запроса не может быть выбран.
Кроме того, параметр updating разрешает использование устаревшего кэшированного ответа, если он в настоящее время обновляется. Это позволяет минимизировать количество обращений к серверам uwsgi при обновлении кэшированных данных.
Использование устаревшего кэшированного ответа также может быть включено непосредственно в заголовке ответа в течение определенного количества секунд после того, как ответ стал устаревшим (1.11.10). Это имеет более низкий приоритет, чем использование параметров директивы.
- Расширение «stale-while-revalidate» поля заголовка «Cache-Control» разрешает использование устаревшего кэшированного ответа, если он в настоящее время обновляется.
- Расширение «stale-if-error» поля заголовка «Cache-Control» разрешает использование устаревшего кэшированного ответа в случае ошибки.
Для минимизации числа обращений к серверам uwsgi при заполнении нового элемента кэша можно использовать директиву uwsgi_cache_lock.
| Синтаксис: | uwsgi_cache_valid [code ...] time; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | http, server, location |
Устанавливает время кэширования для различных кодов ответов. Например, следующие директивы
uwsgi_cache_valid 200 302 10m; uwsgi_cache_valid 404 1m;
устанавливают 10 минут кэширования для ответов с кодами 200 и 302 и 1 минуту для ответов с кодом 404.
Если указано только кэширование time
uwsgi_cache_valid 5m;
то кэшируются только ответы с кодами 200, 301 и 302.
Кроме того, может быть указан параметр any для кэширования любых ответов:
uwsgi_cache_valid 200 302 10m; uwsgi_cache_valid 301 1h; uwsgi_cache_valid any 1m;
Параметры кэширования также могут быть установлены непосредственно в заголовке ответа. Это имеет более высокий приоритет, чем установка времени кэширования с помощью директивы.
- Поле заголовка «X-Accel-Expires» устанавливает время кэширования ответа в секундах. Значение ноль отключает кэширование для ответа. Если значение начинается с префикса
@, оно устанавливает абсолютное время в секундах с эпохи, до которого ответ может быть кэширован. - Если заголовок не содержит поля «X-Accel-Expires», параметры кэширования могут быть установлены в полях заголовка «Expires» или «Cache-Control».
- Если заголовок содержит поле «Set-Cookie», такой ответ не будет кэширован.
- Если заголовок содержит поле «Vary» со специальным значением «
*», такой ответ не будет кэширован (1.7.7). Если заголовок содержит поле «Vary» с другим значением, такой ответ будет кэширован с учетом соответствующих полей заголовка запроса (1.7.7).
Обработку одного или нескольких из этих полей заголовка ответа можно отключить с помощью директивы uwsgi_ignore_headers.
| Синтаксис: | uwsgi_connect_timeout time; |
|---|---|
| Значение по умолчанию: | uwsgi_connect_timeout 60s; |
| Контекст: | http, server, location |
Определяет таймаут для установления соединения с сервером uwsgi. Следует отметить, что этот таймаут обычно не может превышать 75 секунд.
| Синтаксис: | uwsgi_force_ranges on | off; |
|---|---|
| Значение по умолчанию: | uwsgi_force_ranges off; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.7.7.
Включает поддержку байтовых диапазонов для кэшированных и некэшированных ответов от сервера uwsgi независимо от поля «Accept-Ranges» в этих ответах.
| Синтаксис: | uwsgi_hide_header field; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | http, server, location |
По умолчанию nginx не передает поля заголовка «Status» и «X-Accel-...» из ответа сервера uwsgi клиенту. Директива uwsgi_hide_header устанавливает дополнительные поля, которые не будут переданы. Если, наоборот, передача полей должна быть разрешена, можно использовать директиву uwsgi_pass_header.
| Синтаксис: | uwsgi_ignore_client_abort on | off; |
|---|---|
| Значение по умолчанию: | uwsgi_ignore_client_abort off; |
| Контекст: | http, server, location |
Определяет, следует ли закрывать соединение с сервером uwsgi, когда клиент закрывает соединение, не дожидаясь ответа.
| Синтаксис: | uwsgi_ignore_headers field ...; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | http, server, location |
Отключает обработку определенных полей заголовка ответа от сервера uwsgi. Следующие поля могут быть проигнорированы: «X-Accel-Redirect», «X-Accel-Expires», «X-Accel-Limit-Rate» (1.1.6), «X-Accel-Buffering» (1.1.6), «X-Accel-Charset» (1.1.6), «Expires», «Cache-Control», «Set-Cookie» (0.8.44) и «Vary» (1.7.7).
Если не отключено, обработка этих полей заголовка имеет следующий эффект:
- «X-Accel-Expires», «Expires», «Cache-Control», «Set-Cookie» и «Vary» устанавливают параметры кэширования ответа caching;
- «X-Accel-Redirect» выполняет внутренний редирект на указанный URI;
- «X-Accel-Limit-Rate» устанавливает предел скорости передачи ответа клиенту;
- «X-Accel-Buffering» включает или отключает буферизацию ответа;
- «X-Accel-Charset» устанавливает желаемый кодировку ответа.
| Синтаксис: | uwsgi_intercept_errors on | off; |
|---|---|
| Значение по умолчанию: | uwsgi_intercept_errors off; |
| Контекст: | http, server, location |
Определяет, должны ли ответы сервера uwsgi с кодами больше или равными 300 передаваться клиенту или перехватываться и перенаправляться в nginx для обработки с помощью директивы error_page.
| Синтаксис: | uwsgi_limit_rate rate; |
|---|---|
| Значение по умолчанию: | uwsgi_limit_rate 0; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.7.7.
Ограничивает скорость чтения ответа от сервера uwsgi. rate указано в байтах в секунду. Значение ноль отключает ограничение скорости. Ограничение устанавливается на запрос, поэтому, если nginx одновременно открывает два соединения с сервером uwsgi, общая скорость будет вдвое больше, чем указанное ограничение. Ограничение работает только в том случае, если буферизация ответов от сервера uwsgi включена. Значение параметра может содержать переменные (1.27.0).
| Синтаксис: | uwsgi_max_temp_file_size size; |
|---|---|
| Значение по умолчанию: | uwsgi_max_temp_file_size 1024m; |
| Контекст: | http, server, location |
При включенной буферизации ответов от сервера uwsgi и весь ответ не помещается в буферы, заданные директивами uwsgi_buffer_size и uwsgi_buffers, часть ответа может быть сохранена во временном файле. Эта директива устанавливает максимальный size временного файла. Размер данных, записываемых во временный файл за один раз, устанавливается директивой uwsgi_temp_file_write_size.
Значение ноль отключает буферизацию ответов во временные файлы.
Это ограничение не относится к ответам, которые будут кэшироваться или храниться на диске.
| Синтаксис: | uwsgi_modifier1 number; |
|---|---|
| Значение по умолчанию: | uwsgi_modifier1 0; |
| Контекст: | http, server, location |
Устанавливает значение поля modifier1 в заголовке пакета uwsgi.
| Синтаксис: | uwsgi_modifier2 number; |
|---|---|
| Значение по умолчанию: | uwsgi_modifier2 0; |
| Контекст: | http, server, location |
Устанавливает значение поля modifier2 в заголовке пакета uwsgi.
| Синтаксис: | uwsgi_next_upstream
error |
timeout |
invalid_header |
http_500 |
http_503 |
http_403 |
http_404 |
http_429 |
non_idempotent |
off
...; |
|---|---|
| Значение по умолчанию: | uwsgi_next_upstream error timeout; |
| Контекст: | http, server, location |
Указывает, в каких случаях запрос должен быть передан следующему серверу:
error- произошла ошибка при установлении соединения с сервером, отправке запроса или чтении заголовка ответа;
timeout- произошло превышение времени ожидания при установлении соединения с сервером, отправке запроса или чтении заголовка ответа;
invalid_header- сервер вернул пустой или недопустимый ответ;
http_500- сервер вернул ответ с кодом 500;
http_503- сервер вернул ответ с кодом 503;
http_403- сервер вернул ответ с кодом 403;
http_404- сервер вернул ответ с кодом 404;
http_429- сервер вернул ответ с кодом 429 (1.11.13);
non_idempotent- обычно запросы с неидемпотентным методом (
POST,LOCK,PATCH) не передаются следующему серверу, если запрос уже был отправлен промежуточному серверу (1.9.13); включение этого параметра явно позволяет повторно отправлять такие запросы; off- отключает передачу запроса следующему серверу.
Следует помнить, что передача запроса следующему серверу возможна только если еще ничего не было отправлено клиенту. То есть, если ошибка или превышение времени ожидания произошли в середине передачи ответа, исправить это невозможно.
Директива также определяет, что считается неудачной попыткой связи с сервером. Случаи error, timeout и invalid_header всегда считаются неудачными попытками, даже если они не указаны в директиве. Случаи http_500, http_503, и http_429 считаются неудачными попытками только если они указаны в директиве. Случаи http_403 и http_404 никогда не считаются неудачными попытками.
Передача запроса следующему серверу может быть ограничена количеством попыток и временем.
| Синтаксис: | uwsgi_next_upstream_timeout time; |
|---|---|
| Значение по умолчанию: | uwsgi_next_upstream_timeout 0; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.7.5.
Ограничивает время, в течение которого запрос может быть передан следующему серверу. Значение 0 отключает это ограничение.
| Синтаксис: | uwsgi_next_upstream_tries number; |
|---|---|
| Значение по умолчанию: | uwsgi_next_upstream_tries 0; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.7.5.
Ограничивает количество попыток передачи запроса следующему серверу. Значение 0 отключает это ограничение.
| Синтаксис: | uwsgi_no_cache string ...; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | http, server, location |
Определяет условия, при которых ответ не будет сохранён в кэше. Если хотя бы одно значение строковых параметров не пустое и не равно “0”, то ответ не будет сохранён:
uwsgi_no_cache $cookie_nocache $arg_nocache$arg_comment; uwsgi_no_cache $http_pragma $http_authorization;
Может использоваться вместе с директивой uwsgi_cache_bypass.
| Синтаксис: | uwsgi_param
parameter value
[if_not_empty]; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | http, server, location |
Устанавливает parameter, который должен быть передан серверу uwsgi. value может содержать текст, переменные и их комбинации. Эти директивы наследуются с предыдущего уровня конфигурации только в том случае, если на текущем уровне не определены директивы uwsgi_param.
Стандартные переменные среды CGI должны быть предоставлены как заголовки uwsgi, см. файл uwsgi_params в дистрибутиве:
location / {
include uwsgi_params;
...
}
Если директива указана со значением if_not_empty (1.1.11), то такой параметр будет передан серверу только если его значение не пустое:
uwsgi_param HTTPS $https if_not_empty;
| Синтаксис: | uwsgi_pass [protocol://]address; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | location, if in location |
Устанавливает протокол и адрес сервера uwsgi. В качестве protocol, можно указать “uwsgi” или “suwsgi” (защищённый uwsgi, uwsgi через SSL). Адрес можно указать как доменное имя или IP-адрес, и порт:
uwsgi_pass localhost:9000; uwsgi_pass uwsgi://localhost:9000; uwsgi_pass suwsgi://[2001:db8::1]:9090;
или как путь к сокету UNIX-домена:
uwsgi_pass unix:/tmp/uwsgi.socket;
Если доменное имя разрешается в несколько адресов, все они будут использоваться в циклическом порядке. Кроме того, адрес может быть указан как группа серверов.
Значение параметра может содержать переменные. В этом случае, если адрес указан как доменное имя, имя ищется среди описанных групп серверов, и, если не найдено, определяется с помощью разрешителя.
Протокол защищённого uwsgi поддерживается начиная с версии 1.5.8.
| Синтаксис: | uwsgi_pass_header field; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | http, server, location |
Разрешает передачу иначе отключённых полей заголовка с сервера uwsgi клиенту.
| Синтаксис: | uwsgi_pass_request_body on | off; |
|---|---|
| Значение по умолчанию: | uwsgi_pass_request_body on; |
| Контекст: | http, server, location |
Указывает, передаётся ли исходное тело запроса серверу uwsgi. См. также директиву uwsgi_pass_request_headers.
| Синтаксис: | uwsgi_pass_request_headers on | off; |
|---|---|
| Значение по умолчанию: | uwsgi_pass_request_headers on; |
| Контекст: | http, server, location |
Указывает, передаются ли поля заголовков исходного запроса серверу uwsgi. См. также директиву uwsgi_pass_request_body.
| Синтаксис: | uwsgi_read_timeout time; |
|---|---|
| Значение по умолчанию: | uwsgi_read_timeout 60s; |
| Контекст: | http, server, location |
Определяет время ожидания чтения ответа от сервера uwsgi. Время ожидания устанавливается только между двумя последовательными операциями чтения, а не для передачи всего ответа. Если сервер uwsgi не передаёт ничего в течение этого времени, соединение закрывается.
| Синтаксис: | uwsgi_request_buffering on | off; |
|---|---|
| Значение по умолчанию: | uwsgi_request_buffering on; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.7.11.
Включает или отключает буферизацию тела запроса клиента.
При включённой буферизации всё тело запроса считывается с клиента перед отправкой запроса серверу uwsgi.
При отключённой буферизации тело запроса отправляется серверу uwsgi немедленно по мере его получения. В этом случае запрос не может быть передан следующему серверу, если nginx уже начал отправлять тело запроса.
При использовании HTTP/1.1 с кодировкой передачи тела запроса в блоках (chunked), тело запроса будет буферизоваться независимо от значения директивы.
| Синтаксис: | uwsgi_send_timeout time; |
|---|---|
| Значение по умолчанию: | uwsgi_send_timeout 60s; |
| Контекст: | http, server, location |
Устанавливает время ожидания передачи запроса серверу uwsgi. Время ожидания устанавливается только между двумя последовательными операциями записи, а не для передачи всего запроса. Если сервер uwsgi не получает ничего в течение этого времени, соединение закрывается.
| Синтаксис: | uwsgi_socket_keepalive on | off; |
|---|---|
| Значение по умолчанию: | uwsgi_socket_keepalive off; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.15.6.
Настраивает поведение «TCP keepalive» для исходящих соединений с сервером uwsgi. По умолчанию, для сокета действуют настройки операционной системы. Если директива имеет значение “on”, опция сокета SO_KEEPALIVE включается для сокета.
| Синтаксис: | uwsgi_ssl_certificate file; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.7.8.
Указывает file с сертификатом в формате PEM, используемым для аутентификации на защищённом сервере uwsgi.
Начиная с версии 1.21.0, в имени file можно использовать переменные.
| Синтаксис: | uwsgi_ssl_certificate_key file; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.7.8.
Указывает file с секретным ключом в формате PEM, используемым для аутентификации на защищённом сервере uwsgi.
Можно указать значение engine:name:id вместо file (1.7.9), которое загружает секретный ключ с указанным id из модуля OpenSSL name.
С версии 1.21.0 в имени file можно использовать переменные.
| Синтаксис: | uwsgi_ssl_ciphers ciphers; |
|---|---|
| Значение по умолчанию: | uwsgi_ssl_ciphers DEFAULT; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.5.8.
Указывает включённые шифры для запросов к защищённому серверу uwsgi. Шифры указаны в формате, понятном библиотеке OpenSSL.
Полный список можно просмотреть с помощью команды “openssl ciphers”.
| Синтаксис: | uwsgi_ssl_conf_command name value; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.19.4.
Устанавливает произвольные команды конфигурации OpenSSL команд при установлении соединения с защищённым сервером uwsgi.
Директива поддерживается при использовании OpenSSL 1.0.2 или выше.
Можно указать несколько директив uwsgi_ssl_conf_command, находящихся на одном уровне. Эти директивы наследуются с предыдущего уровня конфигурации только в том случае, если на текущем уровне не определены директивы uwsgi_ssl_conf_command.
Обратите внимание, что непосредственная настройка OpenSSL может привести к непредсказуемому поведению.
| Синтаксис: | uwsgi_ssl_crl file; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.7.0.
Указывает file с отменёнными сертификатами (CRL) в формате PEM, используемыми для проверки сертификата защищённого сервера uwsgi.
| Синтаксис: | uwsgi_ssl_name name; |
|---|---|
| Значение по умолчанию: | uwsgi_ssl_name host from uwsgi_pass; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.7.0.
Позволяет переопределить имя сервера, используемое для проверки сертификата защищённого сервера uwsgi и для передачи через SNI при установлении соединения с защищённым сервером uwsgi.
По умолчанию используется часть хоста из uwsgi_pass.
| Синтаксис: | uwsgi_ssl_password_file file; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.7.8.
Указывает file с парольными фразами для секретных ключей, где каждая фраза указана на отдельной строке. Парольные фразы проверяются по очереди при загрузке ключа.
| Синтаксис: | uwsgi_ssl_protocols
[SSLv2]
[SSLv3]
[TLSv1]
[TLSv1.1]
[TLSv1.2]
[TLSv1.3]; |
|---|---|
| Значение по умолчанию: | uwsgi_ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.5.8.
Включает указанные протоколы для запросов к защищённому серверу uwsgi.
Параметр TLSv1.3 используется по умолчанию с версии 1.23.4. | Синтаксис: | uwsgi_ssl_server_name on | off; |
|---|---|
| Значение по умолчанию: | uwsgi_ssl_server_name off; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.7.0.
Включает или отключает передачу имени сервера через расширение TLS Server Name Indication (SNI, RFC 6066) при установлении соединения с защищённым сервером uwsgi.
| Синтаксис: | uwsgi_ssl_session_reuse on | off; |
|---|---|
| Значение по умолчанию: | uwsgi_ssl_session_reuse on; |
| Контекст: | http, server, location |
Определяет, могут ли сеансы SSL повторно использоваться при работе с защищённым сервером uwsgi. Если в логах появляются ошибки “SSL3_GET_FINISHED:digest check failed”, попробуйте отключить повторное использование сеансов.
| Синтаксис: | uwsgi_ssl_trusted_certificate file; |
|---|---|
| Значение по умолчанию: | — |
| Контекст: | http, server, location |
Указывает file с доверенными сертификатами CA в формате PEM, используемыми для проверки сертификата защищённого сервера uwsgi.
| Синтаксис: | uwsgi_ssl_verify on | off; |
|---|---|
| Значение по умолчанию: | uwsgi_ssl_verify off; |
| Контекст: | http, server, location |
Включает или отключает проверку сертификата защищённого сервера uwsgi.
| Синтаксис: | uwsgi_ssl_verify_depth number; |
|---|---|
| Значение по умолчанию: | uwsgi_ssl_verify_depth 1; |
| Контекст: | http, server, location |
Устанавливает глубину проверки сертификатов цепочки защищённого сервера uwsgi.
| Синтаксис: | uwsgi_store
on |
off |
string; |
|---|---|
| Значение по умолчанию: | uwsgi_store off; |
| Контекст: | http, server, location |
Включает сохранение файлов на диск. Параметр on сохраняет файлы с путями, соответствующими директивам alias или root. Параметр off отключает сохранение файлов. Кроме того, имя файла можно установить явно с помощью string с переменными:
uwsgi_store /data/www$original_uri;
Время изменения файлов устанавливается в соответствии с полученным заголовком ответа «Last-Modified». Сначала ответ записывается во временный файл, а затем файл переименовывается. Начиная с версии 0.8.9, временные файлы и постоянное хранилище можно размещать на разных файловых системах. Однако имейте в виду, что в этом случае файл копируется между двумя файловыми системами вместо более эффективной операции переименования. Поэтому рекомендуется, чтобы для каждого расположения и сохранённые файлы, и каталог, содержащий временные файлы (устанавливаемые директивой uwsgi_temp_path), находились на одной файловой системе.
Данную директиву можно использовать для создания локальных копий статических неизменяемых файлов, например:
location /images/ {
root /data/www;
error_page 404 = /fetch$uri;
}
location /fetch/ {
internal;
uwsgi_pass backend:9000;
...
uwsgi_store on;
uwsgi_store_access user:rw group:rw all:r;
uwsgi_temp_path /data/temp;
alias /data/www/;
}
| Синтаксис: | uwsgi_store_access users:permissions ...; |
|---|---|
| Значение по умолчанию: | uwsgi_store_access user:rw; |
| Контекст: | http, server, location |
Устанавливает права доступа для вновь созданных файлов и каталогов, например:
uwsgi_store_access user:rw group:rw all:r;
Если указаны любые права доступа group или all, то права user можно опустить:
uwsgi_store_access group:rw all:r;
| Синтаксис: | uwsgi_temp_file_write_size size; |
|---|---|
| Значение по умолчанию: | uwsgi_temp_file_write_size 8k|16k; |
| Контекст: | http, server, location |
Ограничивает size данных, записываемых во временный файл за раз, когда включена буферизация ответов с сервера uwsgi во временные файлы. По умолчанию size ограничено двумя буферами, задаваемыми директивами uwsgi_buffer_size и uwsgi_buffers. Максимальный размер временного файла задаётся директивой uwsgi_max_temp_file_size.
| Синтаксис: | uwsgi_temp_path
path
[level1
[level2
[level3]]]; |
|---|---|
| Значение по умолчанию: | uwsgi_temp_path uwsgi_temp; |
| Контекст: | http, server, location |
Определяет каталог для хранения временных файлов с данными, полученными с серверов uwsgi. Под указанным каталогом может быть до трёх уровней вложенных подкаталогов. Например, в следующей конфигурации
uwsgi_temp_path /spool/nginx/uwsgi_temp 1 2;
временный файл может выглядеть так:
/spool/nginx/uwsgi_temp/7/45/00000123457
См. также параметр use_temp_path директивы uwsgi_cache_path.
© 2002-2021 Igor Sysoev
© 2011-2024 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html