Модуль ngx_http_uwsgi_module |
Разделы
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Модуль Пример конфигурации
location / { include uwsgi_params; uwsgi_pass localhost:9000; }
Директивы
Задаёт локальный IP-
Задаёт
Разрешает или запрещает использовать буферизацию ответов uwsgi-сервера. Если буферизация включена, то nginx принимает ответ uwsgi-сервера как можно быстрее, сохраняя его в буферы, заданные директивами uwsgi_buffer_size и uwsgi_buffers. Если ответ не вмещается целиком в память, то его часть может быть записана на диск во временный файл. Запись во временные файлы контролируется директивами uwsgi_max_temp_file_size и uwsgi_temp_file_write_size. Если буферизация выключена, то ответ синхронно передаётся клиенту сразу же по мере его поступления. nginx не пытается считать весь ответ uwsgi-сервера. Максимальный размер данных, который nginx может принять от сервера за один раз, задаётся директивой uwsgi_buffer_size.
Буферизация может быть также включена или выключена путём передачи
значения “
Задаёт
При включённой буферизации ответов
uwsgi-сервера, ограничивает суммарный
Задаёт зону разделяемой памяти, используемой для кэширования.
Одна и та же зона может использоваться в нескольких местах.
Параметр
Задаёт условия, при которых ответ не будет браться из кэша. Если значение хотя бы одного из строковых параметров непустое и не равно “0”, то ответ не берётся из кэша: uwsgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment; uwsgi_cache_bypass $http_pragma $http_authorization; Можно использовать совместно с директивой uwsgi_no_cache.
Задаёт ключ для кэширования, например, uwsgi_cache_key localhost:9000$request_uri;
Эта директива появилась в версии 1.1.12. Если включено, одновременно только одному запросу будет позволено заполнить новый элемент кэша, идентифицируемый согласно директиве uwsgi_cache_key, передав запрос на uwsgi-сервер. Остальные запросы этого же элемента будут либо ожидать появления ответа в кэше, либо освобождения блокировки этого элемента, в течение времени, заданного директивой uwsgi_cache_lock_timeout.
Эта директива появилась в версии 1.1.12. Задаёт таймаут для uwsgi_cache_lock.
Если метод запроса клиента указан в этой директиве,
то ответ будет закэширован.
Методы “
Задаёт
Задаёт путь и другие параметры кэша.
Данные кэша хранятся в файлах.
Именем файла в кэше является результат функции MD5
от ключа кэширования.
Параметр uwsgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m; имена файлов в кэше будут такого вида: /data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
Кэшируемый ответ сначала записывается во временный файл, а потом этот файл переименовывается. Начиная с версии 0.8.9, временные файлы и кэш могут располагаться на разных файловых системах. Однако нужно учитывать, что в этом случае вместо дешёвой операции переименовывания в пределах одной файловой системы файл копируется с одной файловой системы на другую. Поэтому лучше, если кэш будет находиться на той же файловой системе, что и каталог с временными файлами, задаваемый директивой uwsgi_temp_path для данного location.
Кроме того, все активные ключи и информация о данных хранятся в зоне
разделяемой памяти,
Если к данным кэша не обращаются в течение времени, заданного параметром
Специальный процесс “cache manager” следит за максимальным размером кэша,
заданным параметром
Через минуту после старта активируется специальный процесс “cache loader”,
который загружает в зону кэша информацию о ранее закэшированных данных,
хранящихся на файловой системе.
Загрузка происходит итерациями.
За одну итерацию загружается не более
Эта директива появилась в версии 1.5.7. Задаёт условия, при которых запрос будет считаться запросом на очистку кэша. Если значение хотя бы одного из строковых параметров непустое и не равно “0”, то запись в кэше с соответствующим ключом кэширования удаляется. В результате успешной операции возвращается ответ с кодом 204 (No Content).
Если ключ кэширования
запроса на очистку заканчивается
звёздочкой (“ Пример конфигурации: uwsgi_cache_path /data/nginx/cache keys_zone=cache_zone:10m; map $request_method $purge_method { PURGE 1; default 0; } server { ... location / { uwsgi_pass http://backend; uwsgi_cache cache_zone; uwsgi_cache_key $uri; uwsgi_cache_purge $purge_method; } }
Эта директива появилась в версии 1.5.7. Разрешает ревалидацию просроченных элементов кэша при помощи условных запросов с полем заголовка “If-Modified-Since”.
Определяет, в каких случаях можно использовать устаревший закэшированный ответ, если при работе с uwsgi-сервером возникла ошибка. Параметры директивы совпадают с параметрами директивы uwsgi_next_upstream.
Кроме того, дополнительный параметр Чтобы минимизировать число обращений к uwsgi-серверам при заполнении нового элемента кэша, можно воспользоваться директивой uwsgi_cache_lock.
Задаёт время кэширования для разных кодов ответа. Например, директивы uwsgi_cache_valid 200 302 10m; uwsgi_cache_valid 404 1m; задают время кэширования 10 минут для ответов с кодами 200 и 302 и 1 минуту для ответов с кодом 404.
Если указано только uwsgi_cache_valid 5m; то кэшируются только ответы 200, 301 и 302.
Кроме того, можно кэшировать любые ответы с помощью параметра
uwsgi_cache_valid 200 302 10m; uwsgi_cache_valid 301 1h; uwsgi_cache_valid any 1m;
Параметры кэширования могут также быть заданы непосредственно
в заголовке ответа.
Такой способ приоритетнее, чем задание времени кэширования с помощью директивы.
Поле заголовка “X-Accel-Expires” задаёт время кэширования
ответа в секундах.
Значение 0 запрещает кэшировать ответ.
Если значение начинается с префикса
Задаёт таймаут для установления соединения с uwsgi-сервером. Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд.
По умолчанию
nginx не передаёт клиенту поля заголовка “Status” и
“X-Accel-...” из ответа uwsgi-сервера.
Директива
Определяет, закрывать ли соединение с uwsgi-сервером в случае, если клиент закрыл соединение, не дождавшись ответа.
Запрещает обработку некоторых полей заголовка из ответа 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). Если не запрещено, обработка этих полей заголовка заключается в следующем:
Определяет, передавать ли клиенту ответы uwsgi-сервера с кодом больше либо равным 300, или же перенаправлять их на обработку nginx’у с помощью директивы error_page.
Если включена буферизация ответов
uwsgi-сервера, и ответ не вмещается целиком в буферы,
заданные директивами uwsgi_buffer_size и
uwsgi_buffers, часть ответа может быть записана во временный файл.
Эта директива задаёт максимальный Значение 0 отключает возможность буферизации ответов во временные файлы.
Определяет, в каких случаях запрос будет передан следующему серверу:
Необходимо понимать, что передача запроса следующему серверу возможна только при условии, что клиенту ещё ничего не передавалось. То есть, если ошибка или таймаут возникли в середине передачи ответа, то исправить это уже невозможно.
Директива также определяет, что считается неудачной попыткой работы с
сервером.
Случаи
Задаёт условия, при которых ответ не будет сохраняться в кэш. Если значение хотя бы одного из строковых параметров непустое и не равно “0”, то ответ не будет сохранён: uwsgi_no_cache $cookie_nocache $arg_nocache$arg_comment; uwsgi_no_cache $http_pragma $http_authorization; Можно использовать совместно с директивой uwsgi_cache_bypass.
Задаёт
Стандартные
переменные
окружения CGI
должны передаваться как заголовки uwsgi, см. файл location / { include uwsgi_params; ... }
Если директива указана с uwsgi_param HTTPS $https if_not_empty;
Задаёт протокол и адрес uwsgi-сервера.
В качестве протокола можно указать
“ uwsgi_pass localhost:9000; uwsgi_pass uwsgi://localhost:9000; uwsgi_pass suwsgi://[2001:db8::1]:9090; или в виде пути UNIX-сокета: uwsgi_pass unix:/tmp/uwsgi.socket;
Если доменному имени соответствует несколько адресов, то все они будут использоваться по очереди (round-robin). И, кроме того, адрес может быть группой серверов.
Разрешает передавать от uwsgi-сервера клиенту запрещённые для передачи поля заголовка.
Позволяет запретить передачу исходного тела запроса на uwsgi-сервер. См. также директиву uwsgi_pass_request_headers.
Позволяет запретить передачу полей заголовка исходного запроса на uwsgi-сервер. См. также директивы uwsgi_pass_request_body.
Задаёт таймаут при чтении ответа uwsgi-сервера. Таймаут устанавливается не на всю передачу ответа, а только между двумя операциями чтения. Если по истечении этого времени uwsgi-сервер ничего не передаст, соединение закрывается.
Задаёт таймаут при передаче запроса uwsgi-серверу. Таймаут устанавливается не на всю передачу запроса, а только между двумя операциями записи. Если по истечении этого времени uwsgi-сервер не примет новых данных, соединение закрывается.
Эта директива появилась в версии 1.5.8. Описывает разрешённые шифры для запросов к suwsgi-серверу. Шифры задаются в формате, поддерживаемом библиотекой OpenSSL.
Полный список можно посмотреть с помощью команды
“
Эта директива появилась в версии 1.7.0.
Указывает
Эта директива появилась в версии 1.7.0. Позволяет переопределить имя сервера, используемое при проверке сертификата suwsgi-сервера, а также для передачи его через SNI при установлении соединения с suwsgi-сервером. По умолчанию используется имя хоста из uwsgi_pass.
Эта директива появилась в версии 1.5.8. Разрешает указанные протоколы для запросов к suwsgi-серверу.
Эта директива появилась в версии 1.7.0. Разрешает или запрещает передачу имени сервера через расширение Server Name Indication протокола TLS (SNI, RFC 6066) при установлении соединения с suwsgi-сервером.
Эта директива появилась в версии 1.5.8.
Определяет, использовать ли повторно SSL-сессии при
работе с suwsgi-сервером.
Если в логах появляются ошибки
“
Эта директива появилась в версии 1.7.0.
Задаёт
Эта директива появилась в версии 1.7.0. Разрешает или запрещает проверку сертификата suwsgi-сервера.
Эта директива появилась в версии 1.7.0. Устанавливает глубину проверки в цепочке сертификатов suwsgi-сервера.
Разрешает сохранение на диск файлов.
Параметр uwsgi_store /data/www$original_uri;
Время изменения файлов выставляется согласно полученному полю “Last-Modified” в заголовке ответа. Ответ сначала записывается во временный файл, а потом этот файл переименовывается. Начиная с версии 0.8.9, временный файл и постоянное место хранения ответа могут располагаться на разных файловых системах. Однако нужно учитывать, что в этом случае вместо дешёвой операции переименовывания в пределах одной файловой системы файл копируется с одной файловой системы на другую. Поэтому лучше, если сохраняемые файлы будут находиться на той же файловой системе, что и каталог с временными файлами, задаваемый директивой uwsgi_temp_path для данного location. Директиву можно использовать для создания локальных копий статических неизменяемых файлов, например, так: 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 user:rw group:rw all:r;
Если заданы какие-либо права для uwsgi_store_access group:rw all:r;
Ограничивает
Задаёт имя каталога для хранения временных файлов с данными, полученными от uwsgi-серверов. В каталоге может использоваться иерархия подкаталогов до трёх уровней. Например, при такой конфигурации uwsgi_temp_path /spool/nginx/uwsgi_temp 1 2; временный файл будет следующего вида: /spool/nginx/uwsgi_temp/7/45/00000123457
|