# HG changeset patch # User Yaroslav Zhuravlev # Date 1399557279 -14400 # Node ID 1ce4912eb18212c04a2f813e44f273407dc0f048 # Parent ec1097156f815ec9fb209e42b00841f45688e4d2 Translated SCGI module documentation into Russian. diff --git a/xml/ru/GNUmakefile b/xml/ru/GNUmakefile --- a/xml/ru/GNUmakefile +++ b/xml/ru/GNUmakefile @@ -58,6 +58,7 @@ REFS = \ http/ngx_http_realip_module \ http/ngx_http_referer_module \ http/ngx_http_rewrite_module \ + http/ngx_http_scgi_module \ http/ngx_http_secure_link_module \ http/ngx_http_spdy_module \ http/ngx_http_split_clients_module \ diff --git a/xml/ru/docs/http/ngx_http_scgi_module.xml b/xml/ru/docs/http/ngx_http_scgi_module.xml new file mode 100644 --- /dev/null +++ b/xml/ru/docs/http/ngx_http_scgi_module.xml @@ -0,0 +1,1056 @@ + + + + + + + + +
+ + +Модуль ngx_http_scgi_module позволяет передавать +запросы SCGI-серверу. + + +
+ + +
+ + + +location / { + include scgi_params; + scgi_pass localhost:9000; +} + + + +
+ + +
+ + +адрес | off + +http +server +location + + +Задаёт локальный IP-адрес, который будет использоваться в +исходящих соединениях с SCGI-сервером. +В значении параметра допустимо использование переменных (1.3.12). +Специальное значение off (1.3.12) отменяет действие +унаследованной с предыдущего уровня конфигурации +директивы scgi_bind, позволяя системе +самостоятельно выбирать локальный IP-адрес. + + + + + + +размер +4k|8k +http +server +location + + +Задаёт размер буфера, в который будет читаться +первая часть ответа, получаемого от SCGI-сервера. +В этой части ответа находится, как правило, небольшой заголовок ответа. +По умолчанию размер буфера равен размеру одного буфера в директиве +, однако его можно сделать меньше. + + + + + + +on | off +on +http +server +location + + +Разрешает или запрещает использовать буферизацию ответов SCGI-сервера. + + + +Если буферизация включена, то nginx принимает ответ SCGI-сервера +как можно быстрее, сохраняя его в буферы, заданные директивами + и . +Если ответ не вмещается целиком в память, то его часть может быть записана +на диск во временный файл. +Запись во временные файлы контролируется директивами + и +. + + + +Если буферизация выключена, то ответ синхронно передаётся клиенту сразу же +по мере его поступления. +nginx не пытается считать весь ответ SCGI-сервера. +Максимальный размер данных, который nginx может принять от сервера +за один раз, задаётся директивой . + + + +Буферизация может быть также включена или выключена путём передачи +значения “yes” или “no” в поле +
X-Accel-Buffering
заголовка ответа. +Эту возможность можно запретить с помощью директивы +. +
+ +
+ + + +число размер +8 4k|8k +http +server +location + + +Задаёт число и размер буферов +для одного соединения, +в которые будет читаться ответ, получаемый от SCGI-сервера. +По умолчанию размер одного буфера равен размеру страницы. +В зависимости от платформы это или 4K, или 8K. + + + + + + +размер +8k|16k +http +server +location + + +При включённой буферизации ответов +SCGI-сервера, ограничивает суммарный размер +буферов, которые могут быть заняты для отправки ответа клиенту, пока +ответ ещё не прочитан целиком. +Оставшиеся буферы тем временем могут использоваться для чтения ответа +и, при необходимости, буферизации части ответа во временный файл. +По умолчанию размер ограничен двумя буферами, заданными +директивами и . + + + + + + +зона | off +off +http +server +location + + +Задаёт зону разделяемой памяти, используемой для кэширования. +Одна и та же зона может использоваться в нескольких местах. +Параметр off запрещает кэширование, унаследованное +с предыдущего уровня конфигурации. + + + + + + +строка ... + +http +server +location + + +Задаёт условия, при которых ответ не будет браться из кэша. +Если значение хотя бы одного из строковых параметров непустое и не равно “0”, +то ответ не берётся из кэша: + +scgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment; +scgi_cache_bypass $http_pragma $http_authorization; + +Можно использовать совместно с директивой . + + + + + + +строка + +http +server +location + + +Задаёт ключ для кэширования, например, + +scgi_cache_key localhost:9000$request_uri; + + + + + + + +on | off +off +http +server +location +1.1.12 + + +Если включено, одновременно только одному запросу будет позволено +заполнить новый элемент кэша, идентифицируемый согласно директиве +, передав запрос на SCGI-сервер. +Остальные запросы этого же элемента будут либо ожидать +появления ответа в кэше, либо освобождения блокировки +этого элемента, в течение времени, заданного директивой +. + + + + + + +время +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 +от проксированного URL. +Параметр levels задаёт уровни иерархии кэша, +например, при использовании + +scgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m; + +имена файлов в кэше будут такого вида: + +/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c + + + + +Кэшируемый ответ сначала записывается во временный файл, а потом этот файл +переименовывается. +Начиная с версии 0.8.9, временные файлы и кэш +могут располагаться на разных файловых системах. +Однако нужно учитывать, +что в этом случае вместо дешёвой операции переименовывания в пределах +одной файловой системы файл копируется с одной файловой системы на другую. +Поэтому лучше, если кэш будет находиться на той же файловой +системе, что и каталог с временными файлами, задаваемый директивой + для данного location. + + + +Кроме того, все активные ключи и информация о данных хранятся в зоне +разделяемой памяти, имя и размер которой +задаются параметром keys_zone. +Если к данным кэша не обращаются в течение времени, заданного параметром +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”, +то запись в кэше с соответствующим +ключом кэширования удаляется. +В результате успешной операции возвращается ответ с кодом +. + + + +Если ключ кэширования +запроса на очистку заканчивается +звёздочкой (“*”), то все записи в кэше, соответствующие +этой маске, будут удалены из кэша. + + + +Пример конфигурации: + +scgi_cache_path /data/nginx/cache keys_zone=cache_zone:10m; + +map $request_method $purge_method { + PURGE 1; + default 0; +} + +server { + ... + location / { + scgi_pass http://backend; + scgi_cache cache_zone; + scgi_cache_key $uri; + scgi_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 + + +Определяет, в каких случаях можно использовать устаревший закэшированный ответ, +если при работе с SCGI-сервером возникла ошибка. +Параметры директивы совпадают с параметрами +директивы . + + + +Кроме того, дополнительный параметр updating +разрешает использовать устаревший закэшированный ответ, +если на данный момент он уже обновляется. +Это позволяет минимизировать число обращений к SCGI-серверам +при обновлении закэшированных данных. + + + +Чтобы минимизировать число обращений к SCGI-серверам при +заполнении нового элемента кэша, можно воспользоваться директивой +. + + + + + + +[код ...] время + +http +server +location + + +Задаёт время кэширования для разных кодов ответа. +Например, директивы + +scgi_cache_valid 200 302 10m; +scgi_cache_valid 404 1m; + +задают время кэширования 10 минут для ответов с кодами 200 и 302 +и 1 минуту для ответов с кодом 404. + + + +Если указано только время кэширования, + +scgi_cache_valid 5m; + +то кэшируются только ответы 200, 301 и 302. + + + +Кроме того, можно кэшировать любые ответы с помощью параметра +any: + +scgi_cache_valid 200 302 10m; +scgi_cache_valid 301 1h; +scgi_cache_valid any 1m; + + + + +Параметры кэширования могут также быть заданы непосредственно +в заголовке ответа. +Такой способ приоритетнее, чем задание времени кэширования с помощью директивы. +Поле заголовка
X-Accel-Expires
задаёт время кэширования +ответа в секундах. +Значение 0 запрещает кэшировать ответ. +Если значение начинается с префикса @, оно задаёт абсолютное +время в секундах с начала эпохи, до которого ответ может быть закэширован. +Если в заголовке нет поля
X-Accel-Expires
, +параметры кэширования определяются по полям заголовка +
Expires
или
Cache-Control
. +Ответ, в заголовке которого есть поле
Set-Cookie
, +не будет кэшироваться. +Обработка одного или более из этих полей заголовка может быть отключена +при помощи директивы . +
+ +
+ + + +время +60s +http +server +location + + +Задаёт таймаут для установления соединения с SCGI-сервером. +Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд. + + + + + + +поле + +http +server +location + + +По умолчанию +nginx не передаёт клиенту поля заголовка
Status
и +
X-Accel-...
из ответа SCGI-сервера. +Директива scgi_hide_header задаёт дополнительные поля, +которые не будут передаваться. +Если же передачу полей нужно разрешить, можно воспользоваться +директивой . +
+ +
+ + + +on | off +off +http +server +location + + +Определяет, закрывать ли соединение с SCGI-сервером +в случае, если клиент закрыл соединение, не дождавшись ответа. + + + + + + +поле ... + +http +server +location + + +Запрещает обработку некоторых полей заголовка из ответа SCGI-сервера. +В директиве можно указать поля
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 + + +Определяет, передавать ли клиенту ответы SCGI-сервера с кодом +больше либо равным 300, или же перенаправлять их на обработку nginx’у с помощью +директивы . + + + + + + +размер +1024m +http +server +location + + +Если включена буферизация ответов +SCGI-сервера, и ответ не вмещается целиком в буферы, +заданные директивами и +, часть ответа может быть записана во временный файл. +Эта директива задаёт максимальный размер временного файла. +Размер данных, сбрасываемых во временный файл за один раз, задаётся +директивой . + + + +Значение 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”, +то ответ не будет сохранён: + +scgi_no_cache $cookie_nocache $arg_nocache$arg_comment; +scgi_no_cache $http_pragma $http_authorization; + +Можно использовать совместно с директивой . + + + + + + + + параметр значение + [if_not_empty] + +http +server +location + + +Задаёт параметр, который будет передаваться SCGI-серверу. +В качестве значения можно использовать текст, переменные и их комбинации. +Директивы наследуются с предыдущего уровня при условии, что на данном +уровне не описаны свои директивы scgi_param. + + + +Стандартные +переменные +окружения CGI +должны передаваться как заголовки SCGI, см. файл scgi_params +из дистрибутива: + +location / { + include scgi_params; + ... +} + + + + +Если директива указана с if_not_empty (1.1.11), +то такой параметр с пустым значением передаваться на сервер не будет: + +scgi_param HTTPS $https if_not_empty; + + + + + + + +адрес + +location +if в location + + +Задаёт адрес SCGI-сервера. +Адрес может быть указан в виде доменного имени или адреса, и порта, например, + +scgi_pass localhost:9000; + +или в виде пути UNIX-сокета: + +scgi_pass unix:/tmp/scgi.socket; + + + + +Если доменному имени соответствует несколько адресов, то все они будут +использоваться по очереди (round-robin). +И, кроме того, адрес может быть +группой серверов. + + + + + + +поле + +http +server +location + + +Разрешает передавать от SCGI-сервера клиенту +запрещённые для передачи поля заголовка. + + + + + + +время +60s +http +server +location + + +Задаёт таймаут при чтении ответа SCGI-сервера. +Таймаут устанавливается не на всю передачу ответа, +а только между двумя операциями чтения. +Если по истечении этого времени SCGI-сервер ничего не передаст, +соединение закрывается. + + + + + + +on | off +on +http +server +location + + +Позволяет запретить передачу исходного тела запроса +на SCGI-сервер. +См. также директиву . + + + + + + +on | off +on +http +server +location + + +Позволяет запретить передачу полей заголовка исходного запроса на +SCGI-сервер. +См. также директивы . + + + + + + +время +60s +http +server +location + + +Задаёт таймаут при передаче запроса SCGI-серверу. +Таймаут устанавливается не на всю передачу запроса, +а только между двумя операциями записи. +Если по истечении этого времени SCGI-сервер не примет новых данных, +соединение закрывается. + + + + + + + + on | + off | + строка +off +http +server +location + + +Разрешает сохранение на диск файлов. +Параметр on сохраняет файлы в соответствии с путями, +указанными в директивах + или +. +Параметр off запрещает сохранение файлов. +Кроме того, имя файла можно задать явно с помощью строки с переменными: + +scgi_store /data/www$original_uri; + + + + +Время изменения файлов выставляется согласно полученному полю +
Last-Modified
в заголовке ответа. +Ответ сначала записывается во временный файл, а потом этот файл +переименовывается. +Начиная с версии 0.8.9, временный файл и постоянное место хранения ответа +могут располагаться на разных файловых системах. +Однако нужно учитывать, +что в этом случае вместо дешёвой операции переименовывания в пределах +одной файловой системы файл копируется с одной файловой системы на другую. +Поэтому лучше, если сохраняемые файлы будут находиться на той же файловой +системе, что и каталог с временными файлами, задаваемый директивой + для данного location. +
+ + +Директиву можно использовать для создания локальных копий статических +неизменяемых файлов, например, так: + +location /images/ { + root /data/www; + error_page 404 = /fetch$uri; +} + +location /fetch/ { + internal; + + scgi_pass backend:9000; + ... + + scgi_store on; + scgi_store_access user:rw group:rw all:r; + scgi_temp_path /data/temp; + + alias /data/www/; +} + + + +
+ + + +пользователи:права ... +user:rw +http +server +location + + +Задаёт права доступа для создаваемых файлов и каталогов, например, + +scgi_store_access user:rw group:rw all:r; + + + + +Если заданы какие-либо права для group или +all, то права для user +указывать необязательно: + +scgi_store_access group:rw all:r; + + + + + + + +размер +8k|16k +http +server +location + + +Ограничивает размер данных, сбрасываемых во временный файл +за один раз, при включённой буферизации ответов SCGI-сервера +во временные файлы. +По умолчанию размер ограничен двумя буферами, заданными +директивами и . +Максимальный размер временного файла задаётся директивой +. + + + + + + + + путь + [уровень1 + [уровень2 + [уровень3]]] +scgi_temp +http +server +location + + +Задаёт имя каталога для хранения временных файлов с данными, +полученными от SCGI-серверов. +В каталоге может использоваться иерархия подкаталогов до трёх уровней. +Например, при такой конфигурации + +scgi_temp_path /spool/nginx/scgi_temp 1 2; + +временный файл будет следующего вида: + +/spool/nginx/scgi_temp/7/45/00000123457 + + + + + +
+ +
diff --git a/xml/ru/docs/index.xml b/xml/ru/docs/index.xml --- a/xml/ru/docs/index.xml +++ b/xml/ru/docs/index.xml @@ -312,6 +312,11 @@ ngx_http_rewrite_module + +ngx_http_scgi_module + + + ngx_http_secure_link_module