# HG changeset patch # User Ruslan Ermilov # Date 1400277303 -14400 # Node ID ea85ba147fe922e643f0f85d70bc5192bf71e6ab # Parent dd4cfc6ce77085c4a8a9507718f7abc8f5d182de Mechanically converted SCGI module docs to uwsgi. diff --git a/xml/en/GNUmakefile b/xml/en/GNUmakefile --- a/xml/en/GNUmakefile +++ b/xml/en/GNUmakefile @@ -79,6 +79,7 @@ REFS = \ http/ngx_http_sub_module \ http/ngx_http_upstream_module \ http/ngx_http_userid_module \ + http/ngx_http_uwsgi_module \ http/ngx_http_xslt_module \ mail/ngx_mail_auth_http_module \ mail/ngx_mail_core_module \ diff --git a/xml/en/docs/http/ngx_http_uwsgi_module.xml b/xml/en/docs/http/ngx_http_uwsgi_module.xml new file mode 100644 --- /dev/null +++ b/xml/en/docs/http/ngx_http_uwsgi_module.xml @@ -0,0 +1,1068 @@ + + + + + + + + +
+ + +The ngx_http_uwsgi_module module allows passing +requests to a uwsgi server. + + +
+ + +
+ + + +location / { + include uwsgi_params; + uwsgi_pass localhost:9000; +} + + + +
+ + +
+ + +address | off + +http +server +location + + +Makes outgoing connections to a uwsgi server originate +from the specified local IP address. +Parameter value can contain variables (1.3.12). +The special value off (1.3.12) cancels the effect +of the uwsgi_bind directive +inherited from the previous configuration level, which allows the +system to auto-assign the local IP address. + + + + + + +size +4k|8k +http +server +location + + +Sets the size of the buffer used for reading the first part +of the response received from the uwsgi server. +This part usually contains a small response header. +By default, the buffer size is equal to the size of one +buffer set by the directive. +It can be made smaller, however. + + + + + + +on | off +on +http +server +location + + +Enables or disables buffering of responses from the uwsgi server. + + + +When buffering is enabled, nginx receives a response from the uwsgi server +as soon as possible, saving it into the buffers set by the + and directives. +If the whole response does not fit into memory, a part of it can be saved +to a temporary file on the disk. +Writing to temporary files is controlled by the + and + directives. + + + +When buffering is disabled, the response is passed to a client synchronously, +immediately as it is received. +nginx will not try to read the whole response from the uwsgi server. +The maximum size of the data that nginx can receive from the server +at a time is set by the directive. + + + +Buffering can also be enabled or disabled by passing +“yes” or “no” in the +
X-Accel-Buffering
response header field. +This capability can be disabled using the + directive. +
+ +
+ + + +number size +8 4k|8k +http +server +location + + +Sets the number and size of the +buffers used for reading a response from the uwsgi server, +for a single connection. +By default, the buffer size is equal to one memory page. +This is either 4K or 8K, depending on a platform. + + + + + + +size +8k|16k +http +server +location + + +When buffering of responses from the uwsgi +server is enabled, limits the total size of buffers that +can be busy sending a response to the client while the response is not +yet fully read. +In the meantime, the rest of the buffers can be used for reading the response +and, if needed, buffering part of the response to a temporary file. +By default, size is limited by the size of two buffers set by the + and directives. + + + + + + +zone | off +off +http +server +location + + +Defines a shared memory zone used for caching. +The same zone can be used in several places. +The off parameter disables caching inherited +from the previous configuration level. + + + + + + +string ... + +http +server +location + + +Defines conditions under which the response will not be taken from a cache. +If at least one value of the string parameters is not empty and is not +equal to “0” then the response will not be taken from the cache: + +uwsgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment; +uwsgi_cache_bypass $http_pragma $http_authorization; + +Can be used along with the directive. + + + + + + +string + +http +server +location + + +Defines a key for caching, for example + +uwsgi_cache_key localhost:9000$request_uri; + + + + + + + +on | off +off +http +server +location +1.1.12 + + +When enabled, only one request at a time will be allowed to populate +a new cache element identified according to the +directive by passing a request to a uwsgi server. +Other requests of the same cache element will either wait +for a response to appear in the cache or the cache lock for +this element to be released, up to the time set by the + directive. + + + + + + +time +5s +http +server +location +1.1.12 + + +Sets a timeout for . + + + + + + + + GET | + HEAD | + POST + ... +GET HEAD +http +server +location + + +If the client request method is listed in this directive then +the response will be cached. +“GET” and “HEAD” methods are always +added to the list, though it is recommended to specify them explicitly. +See also the directive. + + + + + + +number +1 +http +server +location + + +Sets the number of requests after which the response +will be cached. + + + + + + + + path + [levels=levels] + keys_zone=name:size + [inactive=time] + [max_size=size] + [loader_files=number] + [loader_sleep=time] + [loader_threshold=time] + +http + + +Sets the path and other parameters of a cache. +Cache data are stored in files. +The file name in a cache is a result of +applying the MD5 function to the +cache key. +The levels parameter defines hierarchy levels of a cache. +For example, in the following configuration + +uwsgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m; + +file names in a cache will look like this: + +/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c + + + + +A cached response is first written to a temporary file, +and then the file is renamed. +Starting from version 0.8.9, temporary files and the cache can be put on +different file systems. +However, be aware that in this case a file is copied +across two file systems instead of the cheap renaming operation. +It is thus recommended that for any given location both cache and a directory +holding temporary files, set by the directive, +are put on the same file system. + + + +In addition, all active keys and information about data are stored +in a shared memory zone, whose name and size +are configured by the keys_zone parameter. +One megabyte zone can store about 8 thousand keys. + + + +Cached data that are not accessed during the time specified by the +inactive parameter get removed from the cache +regardless of their freshness. +By default, inactive is set to 10 minutes. + + + +The special “cache manager” process monitors the maximum cache size set +by the max_size parameter. +When this size is exceeded, it removes the least recently used data. + + + +A minute after the start the special “cache loader” process is activated. +It loads information about previously cached data stored on file system +into a cache zone. +The loading is done in iterations. +During one iteration no more than loader_files items +are loaded (by default, 100). +Besides, the duration of one iteration is limited by the +loader_threshold parameter (by default, 200 milliseconds). +Between iterations, a pause configured by the loader_sleep +parameter (by default, 50 milliseconds) is made. + + + + + + +string ... + +http +server +location +1.5.7 + + +Defines conditions under which the request will be considered a cache +purge request. +If at least one value of the string parameters is not empty and is not equal +to “0” then the cache entry with a corresponding +cache key is removed. +The result of successful operation is indicated by returning +the response. + + + +If the cache key of a purge request ends +with an asterisk (“*”), all cache entries matching the +wildcard key will be removed from the cache. + + + +Example configuration: + +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; + } +} + + +This functionality is available as part of our +commercial subscription. + + + + + + + +on | off +off +http +server +location +1.5.7 + + +Enables revalidation of expired cache items using conditional requests with +the
If-Modified-Since
header field. +
+ +
+ + + + + error | + timeout | + invalid_header | + updating | + http_500 | + http_503 | + http_403 | + http_404 | + off + ... +off +http +server +location + + +Determines in which cases a stale cached response can be used +when an error occurs during communication with the uwsgi server. +The directive’s parameters match the parameters of the + directive. + + + +Additionally, the updating parameter permits +using a stale cached response if it is currently being updated. +This allows minimizing the number of accesses to uwsgi servers +when updating cached data. + + + +To minimize the number of accesses to uwsgi servers when +populating a new cache element, the +directive can be used. + + + + + + +[code ...] time + +http +server +location + + +Sets caching time for different response codes. +For example, the following directives + +uwsgi_cache_valid 200 302 10m; +uwsgi_cache_valid 404 1m; + +set 10 minutes of caching for responses with codes 200 and 302 +and 1 minute for responses with code 404. + + + +If only caching time is specified + +uwsgi_cache_valid 5m; + +then only 200, 301, and 302 responses are cached. + + + +In addition, the any parameter can be specified +to cache any responses: + +uwsgi_cache_valid 200 302 10m; +uwsgi_cache_valid 301 1h; +uwsgi_cache_valid any 1m; + + + + +Parameters of caching can also be set directly +in the response header. +This has higher priority than setting of caching time using the directive. +The
X-Accel-Expires
header field sets caching time of a +response in seconds. +The zero value disables caching for a response. +If the value starts with the @ prefix, it sets an absolute +time in seconds since Epoch, up to which the response may be cached. +If the header does not include the
X-Accel-Expires
field, +parameters of caching may be set in the header fields +
Expires
or
Cache-Control
. +If the header includes the
Set-Cookie
field, such a +response will not be cached. +Processing of one or more of these response header fields can be disabled +using the directive. +
+ +
+ + + +time +60s +http +server +location + + +Defines a timeout for establishing a connection with a uwsgi server. +It should be noted that this timeout cannot usually exceed 75 seconds. + + + + + + +field + +http +server +location + + +By default, +nginx does not pass the header fields
Status
and +
X-Accel-...
from the response of a uwsgi +server to a client. +The uwsgi_hide_header directive sets additional fields +that will not be passed. +If, on the contrary, the passing of fields needs to be permitted, +the directive can be used. +
+ +
+ + + +on | off +off +http +server +location + + +Determines whether the connection with a uwsgi server should be +closed when a client closes the connection without waiting +for a response. + + + + + + +field ... + +http +server +location + + +Disables processing of certain response header fields from the uwsgi server. +The following fields can be ignored:
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
, and
Set-Cookie
(0.8.44). +
+ + +If not disabled, processing of these header fields has the following +effect: + + + +
X-Accel-Expires
,
Expires
, +
Cache-Control
, and
Set-Cookie
+set the parameters of response caching; +
+ + +
X-Accel-Redirect
performs an +internal +redirect to the specified URI; +
+ + +
X-Accel-Limit-Rate
sets the +rate +limit for transmission of a response to a client; +
+ + +
X-Accel-Buffering
enables or disables +buffering of a response; +
+ + +
X-Accel-Charset
sets the desired + +of a response. +
+ +
+
+ +
+ + + +on | off +off +http +server +location + + +Determines whether a uwsgi server responses with codes greater than or equal +to 300 should be passed to a client or be redirected to nginx for processing +with the directive. + + + + + + +size +1024m +http +server +location + + +When buffering of responses from the uwsgi +server is enabled, and the whole response does not fit into the buffers +set by the and +directives, a part of the response can be saved to a temporary file. +This directive sets the maximum size of the temporary file. +The size of data written to the temporary file at a time is set +by the directive. + + + +The zero value disables buffering of responses to temporary files. + + + + + + + + error | + timeout | + invalid_header | + http_500 | + http_503 | + http_403 | + http_404 | + off + ... +error timeout +http +server +location + + +Specifies in which cases a request should be passed to the next server: + + +error +an error occurred while establishing a connection with the +server, passing a request to it, or reading the response header; + +timeout +a timeout has occurred while establishing a connection with the +server, passing a request to it, or reading the response header; + +invalid_header +a server returned an empty or invalid response; + +http_500 +a server returned a response with the code 500; + +http_503 +a server returned a response with the code 503; + +http_403 +a server returned a response with the code 403; + +http_404 +a server returned a response with the code 404; + +off +disables passing a request to the next server. + + + + + +One should bear in mind that passing a request to the next server is +only possible if nothing has been sent to a client yet. +That is, if an error or timeout occurs in the middle of the +transferring of a response, fixing this is impossible. + + + +The directive also defines what is considered an unsuccessful attempt +of communication with a +. +The cases of error, timeout and +invalid_header are always considered unsuccessful attempts, +even if they are not specified in the directive. +The cases of http_500 and http_503 are +considered unsuccessful attempts only if they are specified in the directive. +The cases of http_403 and http_404 +are never considered unsuccessful attempts. + + + + + + +string ... + +http +server +location + + +Defines conditions under which the response will not be saved to a cache. +If at least one value of the string parameters is not empty and is not +equal to “0” then the response will not be saved: + +uwsgi_no_cache $cookie_nocache $arg_nocache$arg_comment; +uwsgi_no_cache $http_pragma $http_authorization; + +Can be used along with the directive. + + + + + + + + parameter value + [if_not_empty] + +http +server +location + + +Sets a parameter that should be passed to the uwsgi server. +The value can contain text, variables, and their combination. +These directives are inherited from the previous level if and +only if there are no +uwsgi_param +directives defined on the current level. + + + +Standard +CGI +environment variables +should be provided as uwsgi headers, see the uwsgi_params file +provided in the distribution: + +location / { + include uwsgi_params; + ... +} + + + + +If a directive is specified with if_not_empty (1.1.11) then +such a parameter will not be passed to the server until its value is not empty: + +uwsgi_param HTTPS $https if_not_empty; + + + + + + + +address + +location +if in location + + +Sets the address of a uwsgi server. +The address can be specified as a domain name or IP address, +and an optional port: + +uwsgi_pass localhost:9000; + +or as a UNIX-domain socket path: + +uwsgi_pass unix:/tmp/uwsgi.socket; + + + + +If a domain name resolves to several addresses, all of them will be +used in a round-robin fashion. +In addition, an address can be specified as a +server group. + + + + + + +field + +http +server +location + + +Permits passing otherwise disabled header +fields from a uwsgi server to a client. + + + + + + +on | off +on +http +server +location + + +Indicates whether the original request body is passed +to the uwsgi server. +See also the directive. + + + + + + +on | off +on +http +server +location + + +Indicates whether the header fields of the original request are passed +to the uwsgi server. +See also the directive. + + + + + + +time +60s +http +server +location + + +Defines a timeout for reading a response from the uwsgi server. +The timeout is set only between two successive read operations, +not for the transmission of the whole response. +If the uwsgi server does not transmit anything within this time, +the connection is closed. + + + + + + +time +60s +http +server +location + + +Sets a timeout for transmitting a request to the uwsgi server. +The timeout is set only between two successive write operations, +not for the transmission of the whole request. +If the uwsgi server does not receive anything within this time, +the connection is closed. + + + + + + + + on | + off | + string +off +http +server +location + + +Enables saving of files to a disk. +The on parameter saves files with paths +corresponding to the directives + or +. +The off parameter disables saving of files. +In addition, the file name can be set explicitly using the +string with variables: + +uwsgi_store /data/www$original_uri; + + + + +The modification time of files is set according to the received +
Last-Modified
response header field. +The response is first written to a temporary file, +and then the file is renamed. +Starting from version 0.8.9, temporary files and the persistent store +can be put on different file systems. +However, be aware that in this case a file is copied +across two file systems instead of the cheap renaming operation. +It is thus recommended that for any given location both saved files and a +directory holding temporary files, set by the +directive, are put on the same file system. +
+ + +This directive can be used to create local copies of static unchangeable +files, e.g.: + +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/; +} + + + +
+ + + +users:permissions ... +user:rw +http +server +location + + +Sets access permissions for newly created files and directories, e.g.: + +uwsgi_store_access user:rw group:rw all:r; + + + + +If any group or all access permissions +are specified then user permissions may be omitted: + +uwsgi_store_access group:rw all:r; + + + + + + + +size +8k|16k +http +server +location + + +Limits the size of data written to a temporary file +at a time, when buffering of responses from the uwsgi server +to temporary files is enabled. +By default, size is limited by two buffers set by the + and directives. +The maximum size of a temporary file is set by the + directive. + + + + + + + + path + [level1 + [level2 + [level3]]] +uwsgi_temp +http +server +location + + +Defines a directory for storing temporary files +with data received from uwsgi servers. +Up to three-level subdirectory hierarchy can be used underneath the specified +directory. +For example, in the following configuration + +uwsgi_temp_path /spool/nginx/uwsgi_temp 1 2; + +a temporary file might look like this: + +/spool/nginx/uwsgi_temp/7/45/00000123457 + + + + + +
+ +
diff --git a/xml/ru/GNUmakefile b/xml/ru/GNUmakefile --- a/xml/ru/GNUmakefile +++ b/xml/ru/GNUmakefile @@ -67,6 +67,7 @@ REFS = \ http/ngx_http_sub_module \ http/ngx_http_upstream_module \ http/ngx_http_userid_module \ + http/ngx_http_uwsgi_module \ http/ngx_http_xslt_module \ mail/ngx_mail_auth_http_module \ mail/ngx_mail_core_module \ diff --git a/xml/ru/docs/http/ngx_http_uwsgi_module.xml b/xml/ru/docs/http/ngx_http_uwsgi_module.xml new file mode 100644 --- /dev/null +++ b/xml/ru/docs/http/ngx_http_uwsgi_module.xml @@ -0,0 +1,1060 @@ + + + + + + + + +
+ + +Модуль ngx_http_uwsgi_module позволяет передавать +запросы uwsgi-серверу. + + +
+ + +
+ + + +location / { + include uwsgi_params; + uwsgi_pass localhost:9000; +} + + + +
+ + +
+ + +адрес | off + +http +server +location + + +Задаёт локальный IP-адрес, который будет использоваться в +исходящих соединениях с uwsgi-сервером. +В значении параметра допустимо использование переменных (1.3.12). +Специальное значение off (1.3.12) отменяет действие +унаследованной с предыдущего уровня конфигурации +директивы uwsgi_bind, позволяя системе +самостоятельно выбирать локальный IP-адрес. + + + + + + +размер +4k|8k +http +server +location + + +Задаёт размер буфера, в который будет читаться +первая часть ответа, получаемого от uwsgi-сервера. +В этой части ответа находится, как правило, небольшой заголовок ответа. +По умолчанию размер буфера равен размеру одного буфера в директиве +, однако его можно сделать меньше. + + + + + + +on | off +on +http +server +location + + +Разрешает или запрещает использовать буферизацию ответов uwsgi-сервера. + + + +Если буферизация включена, то nginx принимает ответ uwsgi-сервера +как можно быстрее, сохраняя его в буферы, заданные директивами + и . +Если ответ не вмещается целиком в память, то его часть может быть записана +на диск во временный файл. +Запись во временные файлы контролируется директивами + и +. + + + +Если буферизация выключена, то ответ синхронно передаётся клиенту сразу же +по мере его поступления. +nginx не пытается считать весь ответ uwsgi-сервера. +Максимальный размер данных, который nginx может принять от сервера +за один раз, задаётся директивой . + + + +Буферизация может быть также включена или выключена путём передачи +значения “yes” или “no” в поле +
X-Accel-Buffering
заголовка ответа. +Эту возможность можно запретить с помощью директивы +. +
+ +
+ + + +число размер +8 4k|8k +http +server +location + + +Задаёт число и размер буферов +для одного соединения, +в которые будет читаться ответ, получаемый от uwsgi-сервера. +По умолчанию размер одного буфера равен размеру страницы. +В зависимости от платформы это или 4K, или 8K. + + + + + + +размер +8k|16k +http +server +location + + +При включённой буферизации ответов +uwsgi-сервера, ограничивает суммарный размер +буферов, которые могут быть заняты для отправки ответа клиенту, пока +ответ ещё не прочитан целиком. +Оставшиеся буферы тем временем могут использоваться для чтения ответа +и, при необходимости, буферизации части ответа во временный файл. +По умолчанию размер ограничен двумя буферами, заданными +директивами и . + + + + + + +зона | off +off +http +server +location + + +Задаёт зону разделяемой памяти, используемой для кэширования. +Одна и та же зона может использоваться в нескольких местах. +Параметр off запрещает кэширование, унаследованное +с предыдущего уровня конфигурации. + + + + + + +строка ... + +http +server +location + + +Задаёт условия, при которых ответ не будет браться из кэша. +Если значение хотя бы одного из строковых параметров непустое и не равно “0”, +то ответ не берётся из кэша: + +uwsgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment; +uwsgi_cache_bypass $http_pragma $http_authorization; + +Можно использовать совместно с директивой . + + + + + + +строка + +http +server +location + + +Задаёт ключ для кэширования, например, + +uwsgi_cache_key localhost:9000$request_uri; + + + + + + + +on | off +off +http +server +location +1.1.12 + + +Если включено, одновременно только одному запросу будет позволено +заполнить новый элемент кэша, идентифицируемый согласно директиве +, передав запрос на uwsgi-сервер. +Остальные запросы этого же элемента будут либо ожидать +появления ответа в кэше, либо освобождения блокировки +этого элемента, в течение времени, заданного директивой +. + + + + + + +время +5s +http +server +location +1.1.12 + + +Задаёт таймаут для . + + + + + + + + GET | + HEAD | + POST + ... +GET HEAD +http +server +location + + +Если метод запроса клиента указан в этой директиве, +то ответ будет закэширован. +Методы “GET” и “HEAD” всегда добавляются +в список, но тем не менее рекомендуется перечислять их явно. +См. также директиву . + + + + + + +число +1 +http +server +location + + +Задаёт число запросов, после которого ответ будет закэширован. + + + + + + + + путь + [levels=уровни] + keys_zone=имя:размер + [inactive=время] + [max_size=размер] + [loader_files=число] + [loader_sleep=время] + [loader_threshold=время] + +http + + +Задаёт путь и другие параметры кэша. +Данные кэша хранятся в файлах. +Именем файла в кэше является результат функции MD5 +от ключа кэширования. +Параметр levels задаёт уровни иерархии кэша, +например, при использовании + +uwsgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m; + +имена файлов в кэше будут такого вида: + +/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c + + + + +Кэшируемый ответ сначала записывается во временный файл, а потом этот файл +переименовывается. +Начиная с версии 0.8.9, временные файлы и кэш +могут располагаться на разных файловых системах. +Однако нужно учитывать, +что в этом случае вместо дешёвой операции переименовывания в пределах +одной файловой системы файл копируется с одной файловой системы на другую. +Поэтому лучше, если кэш будет находиться на той же файловой +системе, что и каталог с временными файлами, задаваемый директивой + для данного location. + + + +Кроме того, все активные ключи и информация о данных хранятся в зоне +разделяемой памяти, имя и размер которой +задаются параметром keys_zone. +Зоны размером в 1 мегабайт достаточно для хранения около 8 тысяч ключей. + + + +Если к данным кэша не обращаются в течение времени, заданного параметром +inactive, то данные удаляются, независимо от их свежести. +По умолчанию inactive равен 10 минутам. + + + +Специальный процесс “cache manager” следит за максимальным размером кэша, +заданным параметром max_size, и при превышении +его размеров удаляет наименее востребованные данные. + + + +Через минуту после старта активируется специальный процесс “cache loader”, +который загружает в зону кэша информацию о ранее закэшированных данных, +хранящихся на файловой системе. +Загрузка происходит итерациями. +За одну итерацию загружается не более loader_files +элементов (по умолчанию 100). +Кроме того, время работы одной итерации ограничено параметром +loader_threshold (по умолчанию 200 миллисекунд). +Между итерациями делается пауза на время, заданное параметром +loader_sleep (по умолчанию 50 миллисекунд). + + + + + + +строка ... + +http +server +location +1.5.7 + + +Задаёт условия, при которых запрос будет считаться запросом +на очистку кэша. +Если значение хотя бы одного из строковых параметров непустое и не равно “0”, +то запись в кэше с соответствующим +ключом кэширования удаляется. +В результате успешной операции возвращается ответ с кодом +. + + + +Если ключ кэширования +запроса на очистку заканчивается +звёздочкой (“*”), то все записи в кэше, соответствующие +этой маске, будут удалены из кэша. + + + +Пример конфигурации: + +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; + } +} + + +Функциональность доступна как часть +коммерческой подписки. + + + + + + + +on | off +off +http +server +location +1.5.7 + + +Разрешает ревалидацию просроченных элементов кэша при помощи +условных запросов с полем заголовка
If-Modified-Since
. +
+ +
+ + + + + error | + timeout | + invalid_header | + updating | + http_500 | + http_503 | + http_403 | + http_404 | + off + ... +off +http +server +location + + +Определяет, в каких случаях можно использовать устаревший закэшированный ответ, +если при работе с uwsgi-сервером возникла ошибка. +Параметры директивы совпадают с параметрами +директивы . + + + +Кроме того, дополнительный параметр updating +разрешает использовать устаревший закэшированный ответ, +если на данный момент он уже обновляется. +Это позволяет минимизировать число обращений к uwsgi-серверам +при обновлении закэшированных данных. + + + +Чтобы минимизировать число обращений к uwsgi-серверам при +заполнении нового элемента кэша, можно воспользоваться директивой +. + + + + + + +[код ...] время + +http +server +location + + +Задаёт время кэширования для разных кодов ответа. +Например, директивы + +uwsgi_cache_valid 200 302 10m; +uwsgi_cache_valid 404 1m; + +задают время кэширования 10 минут для ответов с кодами 200 и 302 +и 1 минуту для ответов с кодом 404. + + + +Если указано только время кэширования, + +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
задаёт время кэширования +ответа в секундах. +Значение 0 запрещает кэшировать ответ. +Если значение начинается с префикса @, оно задаёт абсолютное +время в секундах с начала эпохи, до которого ответ может быть закэширован. +Если в заголовке нет поля
X-Accel-Expires
, +параметры кэширования определяются по полям заголовка +
Expires
или
Cache-Control
. +Ответ, в заголовке которого есть поле
Set-Cookie
, +не будет кэшироваться. +Обработка одного или более из этих полей заголовка может быть отключена +при помощи директивы . +
+ +
+ + + +время +60s +http +server +location + + +Задаёт таймаут для установления соединения с uwsgi-сервером. +Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд. + + + + + + +поле + +http +server +location + + +По умолчанию +nginx не передаёт клиенту поля заголовка
Status
и +
X-Accel-...
из ответа uwsgi-сервера. +Директива uwsgi_hide_header задаёт дополнительные поля, +которые не будут передаваться. +Если же передачу полей нужно разрешить, можно воспользоваться +директивой . +
+ +
+ + + +on | off +off +http +server +location + + +Определяет, закрывать ли соединение с uwsgi-сервером +в случае, если клиент закрыл соединение, не дождавшись ответа. + + + + + + +поле ... + +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). +
+ + +Если не запрещено, обработка этих полей заголовка заключается в следующем: + + + +
X-Accel-Expires
,
Expires
, +
Cache-Control
и
Set-Cookie
+задают параметры кэширования ответа; +
+ + +
X-Accel-Redirect
производит +внутреннее +перенаправление на указанный URI; +
+ + +
X-Accel-Limit-Rate
задаёт +ограничение +скорости передачи ответа клиенту; +
+ + +
X-Accel-Buffering
включает или выключает +буферизацию ответа; +
+ + +
X-Accel-Charset
задаёт желаемую +кодировку +ответа. +
+ +
+
+ +
+ + + +on | off +off +http +server +location + + +Определяет, передавать ли клиенту ответы uwsgi-сервера с кодом +больше либо равным 300, или же перенаправлять их на обработку nginx’у с помощью +директивы . + + + + + + +размер +1024m +http +server +location + + +Если включена буферизация ответов +uwsgi-сервера, и ответ не вмещается целиком в буферы, +заданные директивами и +, часть ответа может быть записана во временный файл. +Эта директива задаёт максимальный размер временного файла. +Размер данных, сбрасываемых во временный файл за один раз, задаётся +директивой . + + + +Значение 0 отключает возможность буферизации ответов во временные файлы. + + + + + + + + error | + timeout | + invalid_header | + http_500 | + http_503 | + http_403 | + http_404 | + off + ... +error timeout +http +server +location + + +Определяет, в каких случаях запрос будет передан следующему серверу: + + +error +произошла ошибка соединения с сервером, передачи ему запроса или +чтения заголовка ответа сервера; + +timeout +произошёл таймаут во время соединения с сервером, +передачи ему запроса или чтения заголовка ответа сервера; + +invalid_header +сервер вернул пустой или неверный ответ; + +http_500 +сервер вернул ответ с кодом 500; + +http_503 +сервер вернул ответ с кодом 503; + +http_403 +сервер вернул ответ с кодом 403; + +http_404 +сервер вернул ответ с кодом 404; + +off +запрещает передачу запроса следующему серверу. + + + + + +Необходимо понимать, что передача запроса следующему серверу возможна +только при условии, что клиенту ещё ничего не передавалось. +То есть, если ошибка или таймаут возникли в середине передачи ответа, +то исправить это уже невозможно. + + + +Директива также определяет, что считается неудачной попыткой работы с +сервером. +Случаи error, timeout и +invalid_header +всегда считаются неудачными попытками, даже если они не указаны в директиве. +Случаи http_500 и http_503 +считаются неудачными попытками, только если они указаны в директиве. +Случаи http_403 и http_404 +никогда не считаются неудачными попытками. + + + + + + +строка ... + +http +server +location + + +Задаёт условия, при которых ответ не будет сохраняться в кэш. +Если значение хотя бы одного из строковых параметров непустое и не равно “0”, +то ответ не будет сохранён: + +uwsgi_no_cache $cookie_nocache $arg_nocache$arg_comment; +uwsgi_no_cache $http_pragma $http_authorization; + +Можно использовать совместно с директивой . + + + + + + + + параметр значение + [if_not_empty] + +http +server +location + + +Задаёт параметр, который будет передаваться uwsgi-серверу. +В качестве значения можно использовать текст, переменные и их комбинации. +Директивы наследуются с предыдущего уровня при условии, что на данном +уровне не описаны свои директивы uwsgi_param. + + + +Стандартные +переменные +окружения CGI +должны передаваться как заголовки uwsgi, см. файл uwsgi_params +из дистрибутива: + +location / { + include uwsgi_params; + ... +} + + + + +Если директива указана с if_not_empty (1.1.11), +то такой параметр с пустым значением передаваться на сервер не будет: + +uwsgi_param HTTPS $https if_not_empty; + + + + + + + +адрес + +location +if в location + + +Задаёт адрес uwsgi-сервера. +Адрес может быть указан в виде доменного имени или адреса, и порта, например, + +uwsgi_pass localhost:9000; + +или в виде пути UNIX-сокета: + +uwsgi_pass unix:/tmp/uwsgi.socket; + + + + +Если доменному имени соответствует несколько адресов, то все они будут +использоваться по очереди (round-robin). +И, кроме того, адрес может быть +группой серверов. + + + + + + +поле + +http +server +location + + +Разрешает передавать от uwsgi-сервера клиенту +запрещённые для передачи поля заголовка. + + + + + + +on | off +on +http +server +location + + +Позволяет запретить передачу исходного тела запроса +на uwsgi-сервер. +См. также директиву . + + + + + + +on | off +on +http +server +location + + +Позволяет запретить передачу полей заголовка исходного запроса на +uwsgi-сервер. +См. также директивы . + + + + + + +время +60s +http +server +location + + +Задаёт таймаут при чтении ответа uwsgi-сервера. +Таймаут устанавливается не на всю передачу ответа, +а только между двумя операциями чтения. +Если по истечении этого времени uwsgi-сервер ничего не передаст, +соединение закрывается. + + + + + + +время +60s +http +server +location + + +Задаёт таймаут при передаче запроса uwsgi-серверу. +Таймаут устанавливается не на всю передачу запроса, +а только между двумя операциями записи. +Если по истечении этого времени uwsgi-сервер не примет новых данных, +соединение закрывается. + + + + + + + + on | + off | + строка +off +http +server +location + + +Разрешает сохранение на диск файлов. +Параметр on сохраняет файлы в соответствии с путями, +указанными в директивах + или +. +Параметр off запрещает сохранение файлов. +Кроме того, имя файла можно задать явно с помощью строки с переменными: + +uwsgi_store /data/www$original_uri; + + + + +Время изменения файлов выставляется согласно полученному полю +
Last-Modified
в заголовке ответа. +Ответ сначала записывается во временный файл, а потом этот файл +переименовывается. +Начиная с версии 0.8.9, временный файл и постоянное место хранения ответа +могут располагаться на разных файловых системах. +Однако нужно учитывать, +что в этом случае вместо дешёвой операции переименовывания в пределах +одной файловой системы файл копируется с одной файловой системы на другую. +Поэтому лучше, если сохраняемые файлы будут находиться на той же файловой +системе, что и каталог с временными файлами, задаваемый директивой + для данного 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/; +} + + + +
+ + + +пользователи:права ... +user:rw +http +server +location + + +Задаёт права доступа для создаваемых файлов и каталогов, например, + +uwsgi_store_access user:rw group:rw all:r; + + + + +Если заданы какие-либо права для group или +all, то права для user +указывать необязательно: + +uwsgi_store_access group:rw all:r; + + + + + + + +размер +8k|16k +http +server +location + + +Ограничивает размер данных, сбрасываемых во временный файл +за один раз, при включённой буферизации ответов uwsgi-сервера +во временные файлы. +По умолчанию размер ограничен двумя буферами, заданными +директивами и . +Максимальный размер временного файла задаётся директивой +. + + + + + + + + путь + [уровень1 + [уровень2 + [уровень3]]] +uwsgi_temp +http +server +location + + +Задаёт имя каталога для хранения временных файлов с данными, +полученными от uwsgi-серверов. +В каталоге может использоваться иерархия подкаталогов до трёх уровней. +Например, при такой конфигурации + +uwsgi_temp_path /spool/nginx/uwsgi_temp 1 2; + +временный файл будет следующего вида: + +/spool/nginx/uwsgi_temp/7/45/00000123457 + + + + + +
+ +