Spec-Zone.ru › nginx

Модуль ngx_http_uwsgi_module

  • Пример конфигурации
  • Директивы
  • uwsgi_allow_upstream
  • uwsgi_bind
  • uwsgi_bind_dynamic
  • 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_request_dynamic
  • uwsgi_send_timeout
  • uwsgi_socket_keepalive
  • uwsgi_ssl_certificate
  • uwsgi_ssl_certificate_cache
  • uwsgi_ssl_certificate_key
  • uwsgi_ssl_ciphers
  • uwsgi_ssl_conf_command
  • uwsgi_ssl_crl
  • uwsgi_ssl_key_log
  • 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_allow_upstream string ...;
По умолчанию: —
Контекст: http, server, location

Директива появилась в версии 1.29.3.

Задаёт условия, при которых доступ к серверу uwsgi разрешён или запрещён. Если все строковые параметры не пусты и не равны «0», доступ разрешён. Условия проверяются каждый раз перед установлением соединения с сервером uwsgi. Значения параметров могут содержать переменные:

geo $upstream_last_addr $allow {
    volatile;
    10.10.0.0/24        1;
}

server {
    listen 127.0.0.1:8080;

    location / {
        uwsgi_pass           localhost:9000;
        uwsgi_allow_upstream $allow;
        ...
    }
}
Эта директива доступна в рамках нашей коммерческой подписки.
Синтаксис: uwsgi_bind address [transparent] | off;
По умолчанию: —
Контекст: http, server, location

Задаёт локальный IP-адрес и, при необходимости, порт, с которых устанавливаются исходящие соединения с сервером uwsgi (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_bind_dynamic on | off;
По умолчанию: uwsgi_bind_dynamic off;
Контекст: http, server, location

Директива появилась в версии 1.29.3.

При включении операция привязки выполняется при каждой попытке соединения.

Эта директива доступна в рамках нашей коммерческой подписки.
Синтаксис: uwsgi_buffer_size size;
По умолчанию: uwsgi_buffer_size 4k|8k;
Контекст: http, server, location

Задаёт size буфера, используемого для чтения первой части ответа, полученного от сервера uwsgi. Эта часть обычно содержит небольшой заголовок ответа; если он превышает размер буфера, ответ считается недопустимым. По умолчанию размер буфера равен размеру одной страницы памяти. В зависимости от платформы он составляет 4K или 8K. Размер буфера можно уменьшить.

Синтаксис: 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

Задаёт number и size буферов, используемых для чтения ответа от сервера uwsgi в рамках одного соединения. По умолчанию размер буфера равен размеру одной страницы памяти. В зависимости от платформы он составляет 4K или 8K.

Синтаксис: uwsgi_busy_buffers_size size;
По умолчанию: uwsgi_busy_buffers_size 8k|16k;
Контекст: http, server, location

Если буферизация ответов сервера uwsgi включена, ограничивает общий size буферов, которые могут быть заняты отправкой ответа клиенту, пока ответ ещё не прочитан полностью. Тем временем остальные буферы можно использовать для чтения ответа и, при необходимости, для буферизации его части во временный файл. По умолчанию 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

Директива появилась в версии 1.1.12.

Задаёт тайм-аут для 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 временные файлы и кэш можно размещать в разных файловых системах. Однако следует учитывать, что в этом случае файл копируется между двумя файловыми системами вместо дешёвой операции переименования. Поэтому рекомендуется для каждого location размещать кэш и каталог временных файлов в одной файловой системе. Каталог временных файлов задаётся параметром use_temp_path (1.7.10). Если этот параметр не указан или установлен в значение on, будет использоваться каталог, заданный директивой uwsgi_temp_path для данного location. Если указано значение off, временные файлы будут помещаться непосредственно в каталог кэша.

Кроме того, все активные ключи и сведения о данных хранятся в зоне общей памяти, name и size которой задаются параметром keys_zone. В зоне размером один мегабайт можно хранить около 8 тысяч ключей.

В рамках коммерческой подписки зона общей памяти также хранит расширенную информацию о кэше, поэтому для того же количества ключей необходимо указывать больший размер зоны. Например, в зоне размером один мегабайт можно хранить около 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 (Нет содержимого).

Если ключ кэша запроса на очистку заканчивается звёздочкой («*»), из кэша будут удалены все записи, соответствующие ключу с подстановочными знаками. Однако эти записи останутся на диске до тех пор, пока не будут удалены из-за бездействия, обработаны очистителем кэша (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» задают параметры кэширования ответа;
  • «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 | denied | 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
при установлении соединения с сервером, передаче ему запроса или чтении заголовка ответа произошло превышение времени ожидания;
denied
сервер отклонил соединение (1.29.3);
Этот параметр доступен в рамках нашей коммерческой подписки.
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, denied и 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];
По умолчанию: uwsgi_param HTTP_HOST $host$is_request_port$request_port;
Контекст: 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, тело запроса будет буферизоваться независимо от значения директивы.

Синтаксис: uwsgi_request_dynamic on | off;
По умолчанию: uwsgi_request_dynamic off;
Контекст: http, server, location

Эта директива появилась в версии 1.29.3.

Включает или отключает создание отдельного экземпляра запроса для каждого сервера uwsgi. По умолчанию для всех серверов uwsgi используется один запрос. Если параметр включён, создаётся отдельный экземпляр запроса, что позволяет настраивать запрос для каждого сервера.

Эта директива доступна в рамках нашей коммерческой подписки.
Синтаксис: 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_cache off;
uwsgi_ssl_certificate_cache max=N [inactive=time] [valid=time];
По умолчанию: uwsgi_ssl_certificate_cache off;
Контекст: http, server, location

Эта директива появилась в версии 1.27.4.

Определяет кэш, в котором хранятся SSL-сертификаты и секретные ключи, указанные с помощью переменных.

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

max
задаёт максимальное количество элементов в кэше; при переполнении кэша удаляются наименее недавно использованные элементы (LRU);
inactive
задаёт время, по истечении которого элемент удаляется из кэша, если к нему не обращались в течение этого времени; по умолчанию — 10 секунд;
valid
задаёт время, в течение которого элемент кэша считается действительным и может использоваться повторно; по умолчанию — 60 секунд. Сертификаты, срок действия которых истёк, будут загружены повторно или проверены заново;
off
отключает кэш.

Пример:

uwsgi_ssl_certificate       $uwsgi_ssl_server_name.crt;
uwsgi_ssl_certificate_key   $uwsgi_ssl_server_name.key;
uwsgi_ssl_certificate_cache max=1000 inactive=20s valid=1m;
Синтаксис: uwsgi_ssl_certificate_key file;
По умолчанию: —
Контекст: http, server, location

Эта директива появилась в версии 1.7.8.

Задаёт file с секретным ключом в формате PEM, используемым для аутентификации на защищённом сервере uwsgi.

Вместо file можно указать значение engine:name:id (1.7.9), которое загружает секретный ключ с указанным id из движка OpenSSL name.

Вместо file можно указать значение store:scheme:id (1.29.0), которое используется для загрузки секретного ключа с указанным id и URI, зарегистрированным поставщиком OpenSSL, scheme, например pkcs11.

Начиная с версии 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 commands при установлении соединения с защищённым сервером 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_key_log path;
По умолчанию: —
Контекст: http, server, location

Эта директива появилась в версии 1.27.2.

Включает журналирование SSL-ключей соединения с защищённым сервером uwsgi и задаёт путь к файлу журнала ключей. Ключи записываются в формате SSLKEYLOGFILE, совместимом с Wireshark.

Эта директива доступна в рамках нашей коммерческой подписки.
Синтаксис: 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.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

Эта директива появилась в версии 1.5.8.

Определяет, можно ли повторно использовать SSL-сеансы при работе с защищённым сервером uwsgi. Если в журналах появляются ошибки «digest check failed», попробуйте отключить повторное использование сеансов.

Синтаксис: uwsgi_ssl_trusted_certificate file;
По умолчанию: —
Контекст: http, server, location

Эта директива появилась в версии 1.7.0.

Задаёт file с доверенными сертификатами центров сертификации в формате PEM, используемый для проверки сертификата защищённого сервера uwsgi.

Синтаксис: uwsgi_ssl_verify on | off;
По умолчанию: uwsgi_ssl_verify off;
Контекст: http, server, location

Эта директива появилась в версии 1.7.0.

Включает или отключает проверку сертификата защищённого сервера uwsgi.

Синтаксис: uwsgi_ssl_verify_depth number;
По умолчанию: uwsgi_ssl_verify_depth 1;
Контекст: http, server, location

Эта директива появилась в версии 1.7.0.

Задаёт глубину проверки цепочки сертификатов защищённого сервера 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, временные файлы и постоянное хранилище могут размещаться в разных файловых системах. Однако следует учитывать, что в этом случае файл копируется между двумя файловыми системами вместо быстрого переименования. Поэтому рекомендуется для каждого location размещать сохранённые файлы и каталог временных файлов, заданный директивой 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-2026 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API