Path: blob/main/xml/ru/docs/http/ngx_http_fastcgi_module.xml
1 views
<?xml version="1.0"?>12<!--3Copyright (C) Igor Sysoev4Copyright (C) Nginx, Inc.5-->67<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">89<module name="Модуль ngx_http_fastcgi_module"10link="/ru/docs/http/ngx_http_fastcgi_module.html"11lang="ru"12rev="56">1314<section id="summary">1516<para>17Модуль <literal>ngx_http_fastcgi_module</literal> позволяет передавать18запросы FastCGI-серверу.19</para>2021</section>222324<section id="example" name="Пример конфигурации">2526<para>27<example>28location / {29fastcgi_pass localhost:9000;30fastcgi_index index.php;3132fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;33fastcgi_param QUERY_STRING $query_string;34fastcgi_param REQUEST_METHOD $request_method;35fastcgi_param CONTENT_TYPE $content_type;36fastcgi_param CONTENT_LENGTH $content_length;37}38</example>39</para>4041</section>424344<section id="directives" name="Директивы">4546<directive name="fastcgi_allow_upstream">47<syntax><value>строка</value> ...</syntax>48<default/>49<context>http</context>50<context>server</context>51<context>location</context>52<appeared-in>1.29.3</appeared-in>5354<para>55Задаёт условия, при которых доступ к FastCGI-серверу56будет разрешён или <link id="denied">запрещён</link>.57Если все значения строковых параметров непустые58и не равны “0”, то доступ разрешён.59Условия проверяются каждый раз60перед установлением соединения с FastCGI-сервером.61В значении параметров допустимо использование переменных:62<example>63geo $upstream_last_addr $allow {64volatile;6510.10.0.0/24 1;66}6768server {69listen 127.0.0.1:8080;7071location / {72fastcgi_pass localhost:9000;73fastcgi_allow_upstream $allow;74...75}76}77</example>78</para>7980<para>81<note>82Директива доступна как часть83<commercial_version>коммерческой подписки</commercial_version>.84</note>85</para>8687</directive>888990<directive name="fastcgi_bind">91<syntax>92<value>адрес</value>93[<literal>transparent</literal>] |94<literal>off</literal></syntax>95<default/>96<context>http</context>97<context>server</context>98<context>location</context>99<appeared-in>0.8.22</appeared-in>100101<para>102Задаёт локальный IP-адрес с необязательным портом (1.11.2),103который будет использоваться в исходящих соединениях с FastCGI-сервером.104В значении параметра допустимо использование переменных (1.3.12).105Специальное значение <literal>off</literal> (1.3.12) отменяет действие106унаследованной с предыдущего уровня конфигурации107директивы <literal>fastcgi_bind</literal>, позволяя системе108самостоятельно выбирать локальный IP-адрес и порт.109</para>110111<para id="fastcgi_bind_transparent">112Параметр <literal>transparent</literal> (1.11.0) позволяет113задать нелокальный IP-aдрес, который будет использоваться в114исходящих соединениях с FastCGI-сервером,115например, реальный IP-адрес клиента:116<example>117fastcgi_bind $remote_addr transparent;118</example>119Для работы параметра120обычно требуется121запустить рабочие процессы nginx с привилегиями122<link doc="../ngx_core_module.xml" id="user">суперпользователя</link>.123В Linux этого не требуется (1.13.8), так как если124указан параметр <literal>transparent</literal>, то рабочие процессы125наследуют capability <literal>CAP_NET_RAW</literal> из главного процесса.126Также необходимо настроить таблицу маршрутизации ядра127для перехвата сетевого трафика с FastCGI-сервера.128</para>129130</directive>131132133<directive name="fastcgi_bind_dynamic">134<syntax><literal>on</literal> | <literal>off</literal></syntax>135<default>off</default>136<context>http</context>137<context>server</context>138<context>location</context>139<appeared-in>1.29.3</appeared-in>140141<para>142Если включено, операция <link id="fastcgi_bind">bind</link> осуществляется143при каждой попытке соединения.144</para>145146<para>147<note>148Директива доступна как часть149<commercial_version>коммерческой подписки</commercial_version>.150</note>151</para>152153</directive>154155156<directive name="fastcgi_buffer_size">157<syntax><value>размер</value></syntax>158<default>4k|8k</default>159<context>http</context>160<context>server</context>161<context>location</context>162163<para>164Задаёт <value>размер</value> буфера, в который будет читаться165первая часть ответа, получаемого от FastCGI-сервера.166В этой части ответа находится, как правило, небольшой заголовок ответа;167если его размер больше заданного, то такой ответ считается168<link id="invalid_header">неверным</link>.169По умолчанию размер одного буфера равен размеру страницы памяти.170В зависимости от платформы это или 4K, или 8K,171однако его можно сделать меньше.172</para>173174</directive>175176177<directive name="fastcgi_buffering">178<syntax><literal>on</literal> | <literal>off</literal></syntax>179<default>on</default>180<context>http</context>181<context>server</context>182<context>location</context>183<appeared-in>1.5.6</appeared-in>184185<para>186Разрешает или запрещает использовать буферизацию ответов FastCGI-сервера.187</para>188189<para>190Если буферизация включена, то nginx принимает ответ FastCGI-сервера191как можно быстрее, сохраняя его в буферы, заданные директивами192<link id="fastcgi_buffer_size"/> и <link id="fastcgi_buffers"/>.193Если ответ не вмещается целиком в память, то его часть может быть записана194на диск во <link id="fastcgi_temp_path">временный файл</link>.195Запись во временные файлы контролируется директивами196<link id="fastcgi_max_temp_file_size"/> и197<link id="fastcgi_temp_file_write_size"/>.198</para>199200<para>201Если буферизация выключена, то ответ синхронно передаётся клиенту сразу же202по мере его поступления.203nginx не пытается считать весь ответ FastCGI-сервера.204Максимальный размер данных, который nginx может принять от сервера205за один раз, задаётся директивой <link id="fastcgi_buffer_size"/>.206</para>207208<para>209Буферизация может быть также включена или выключена путём передачи210значения “<literal>yes</literal>” или “<literal>no</literal>” в поле211<header>X-Accel-Buffering</header> заголовка ответа.212Эту возможность можно запретить с помощью директивы213<link id="fastcgi_ignore_headers"/>.214</para>215216</directive>217218219<directive name="fastcgi_buffers">220<syntax><value>число</value> <value>размер</value></syntax>221<default>8 4k|8k</default>222<context>http</context>223<context>server</context>224<context>location</context>225226<para>227Задаёт <value>число</value> и <value>размер</value> буферов228для одного соединения,229в которые будет читаться ответ, получаемый от FastCGI-сервера.230По умолчанию размер одного буфера равен размеру страницы.231В зависимости от платформы это или 4K, или 8K.232</para>233234</directive>235236237<directive name="fastcgi_busy_buffers_size">238<syntax><value>размер</value></syntax>239<default>8k|16k</default>240<context>http</context>241<context>server</context>242<context>location</context>243244<para>245При включённой <link id="fastcgi_buffering">буферизации</link> ответов246FastCGI-сервера, ограничивает суммарный <value>размер</value>247буферов, которые могут быть заняты для отправки ответа клиенту, пока248ответ ещё не прочитан целиком.249Оставшиеся буферы тем временем могут использоваться для чтения ответа250и, при необходимости, буферизации части ответа во временный файл.251По умолчанию <value>размер</value> ограничен двумя буферами, заданными252директивами <link id="fastcgi_buffer_size"/> и <link id="fastcgi_buffers"/>.253</para>254255</directive>256257258<directive name="fastcgi_cache">259<syntax><value>зона</value> | <literal>off</literal></syntax>260<default>off</default>261<context>http</context>262<context>server</context>263<context>location</context>264265<para>266Задаёт зону разделяемой памяти, используемой для кэширования.267Одна и та же зона может использоваться в нескольких местах.268В значении параметра можно использовать переменные (1.7.9).269Параметр <literal>off</literal> запрещает кэширование, унаследованное270с предыдущего уровня конфигурации.271</para>272273</directive>274275276<directive name="fastcgi_cache_background_update">277<syntax><literal>on</literal> | <literal>off</literal></syntax>278<default>off</default>279<context>http</context>280<context>server</context>281<context>location</context>282<appeared-in>1.11.10</appeared-in>283284<para>285Позволяет запустить фоновый подзапрос286для обновления просроченного элемента кэша,287в то время как клиенту возвращается устаревший закэшированный ответ.288Использование устаревшего закэшированного ответа в момент его обновления289должно быть290<link id="fastcgi_cache_use_stale_updating">разрешено</link>.291</para>292293</directive>294295296<directive name="fastcgi_cache_bypass">297<syntax><value>строка</value> ...</syntax>298<default/>299<context>http</context>300<context>server</context>301<context>location</context>302303<para>304Задаёт условия, при которых ответ не будет браться из кэша.305Если значение хотя бы одного из строковых параметров непустое и не равно “0”,306то ответ не берётся из кэша:307<example>308fastcgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment;309fastcgi_cache_bypass $http_pragma $http_authorization;310</example>311Можно использовать совместно с директивой <link id="fastcgi_no_cache"/>.312</para>313314</directive>315316317<directive name="fastcgi_cache_key">318<syntax><value>строка</value></syntax>319<default/>320<context>http</context>321<context>server</context>322<context>location</context>323324<para>325Задаёт ключ для кэширования, например,326<example>327fastcgi_cache_key localhost:9000$request_uri;328</example>329</para>330331</directive>332333334<directive name="fastcgi_cache_lock">335<syntax><literal>on</literal> | <literal>off</literal></syntax>336<default>off</default>337<context>http</context>338<context>server</context>339<context>location</context>340<appeared-in>1.1.12</appeared-in>341342<para>343Если включено, одновременно только одному запросу будет позволено344заполнить новый элемент кэша, идентифицируемый согласно директиве345<link id="fastcgi_cache_key"/>, передав запрос на FastCGI-сервер.346Остальные запросы этого же элемента будут либо ожидать347появления ответа в кэше, либо освобождения блокировки348этого элемента, в течение времени, заданного директивой349<link id="fastcgi_cache_lock_timeout"/>.350</para>351352</directive>353354355<directive name="fastcgi_cache_lock_age">356<syntax><value>время</value></syntax>357<default>5s</default>358<context>http</context>359<context>server</context>360<context>location</context>361<appeared-in>1.7.8</appeared-in>362363<para>364Если последний запрос, переданный на FastCGI-сервер365для заполнения нового элемента кэша,366не завершился за указанное <value>время</value>,367на FastCGI-сервер может быть передан ещё один запрос.368</para>369370</directive>371372373<directive name="fastcgi_cache_lock_timeout">374<syntax><value>время</value></syntax>375<default>5s</default>376<context>http</context>377<context>server</context>378<context>location</context>379<appeared-in>1.1.12</appeared-in>380381<para>382Задаёт таймаут для <link id="fastcgi_cache_lock"/>.383По истечении указанного <value>времени</value>384запрос будет передан на FastCGI-сервер,385однако ответ не будет закэширован.386<note>387До версии 1.7.8 такой ответ мог быть закэширован.388</note>389</para>390391</directive>392393394<directive name="fastcgi_cache_max_range_offset">395<syntax><value>число</value></syntax>396<default/>397<context>http</context>398<context>server</context>399<context>location</context>400<appeared-in>1.11.6</appeared-in>401402<para>403Задаёт смещение в байтах для запросов с указанием диапазона запрашиваемых байт404(byte-range requests).405Если диапазон находится за указанным смещением,406range-запрос будет передан на FastCGI-сервер407и ответ не будет закэширован.408</para>409410</directive>411412413<directive name="fastcgi_cache_methods">414<syntax>415<literal>GET</literal> |416<literal>HEAD</literal> |417<literal>POST</literal>418...</syntax>419<default>GET HEAD</default>420<context>http</context>421<context>server</context>422<context>location</context>423<appeared-in>0.7.59</appeared-in>424425<para>426Если метод запроса клиента указан в этой директиве,427то ответ будет закэширован.428Методы “<literal>GET</literal>” и “<literal>HEAD</literal>” всегда добавляются429в список, но тем не менее рекомендуется перечислять их явно.430См. также директиву <link id="fastcgi_no_cache"/>.431</para>432433</directive>434435436<directive name="fastcgi_cache_min_uses">437<syntax><value>число</value></syntax>438<default>1</default>439<context>http</context>440<context>server</context>441<context>location</context>442443<para>444Задаёт <value>число</value> запросов, после которого ответ будет закэширован.445</para>446447</directive>448449450<directive name="fastcgi_cache_path">451<syntax>452<value>путь</value>453[<literal>levels</literal>=<value>уровни</value>]454[<literal>use_temp_path</literal>=<literal>on</literal>|<literal>off</literal>]455<literal>keys_zone</literal>=<value>имя</value>:<value>размер</value>456[<literal>inactive</literal>=<value>время</value>]457[<literal>max_size</literal>=<value>размер</value>]458[<literal>min_free</literal>=<value>размер</value>]459[<literal>manager_files</literal>=<value>число</value>]460[<literal>manager_sleep</literal>=<value>время</value>]461[<literal>manager_threshold</literal>=<value>время</value>]462[<literal>loader_files</literal>=<value>число</value>]463[<literal>loader_sleep</literal>=<value>время</value>]464[<literal>loader_threshold</literal>=<value>время</value>]465[<literal>purger</literal>=<literal>on</literal>|<literal>off</literal>]466[<literal>purger_files</literal>=<value>число</value>]467[<literal>purger_sleep</literal>=<value>время</value>]468[<literal>purger_threshold</literal>=<value>время</value>]</syntax>469<default/>470<context>http</context>471472<para>473Задаёт путь и другие параметры кэша.474Данные кэша хранятся в файлах.475Ключом и именем файла в кэше является результат функции MD5476от проксированного URL.477Параметр <literal>levels</literal> задаёт уровни иерархии кэша:478можно задать от 1 до 3 уровней, на каждом уровне допускаются значения 1 или 2.479Например, при использовании480<example>481fastcgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;482</example>483имена файлов в кэше будут такого вида:484<example>485/data/nginx/cache/<emphasis>c</emphasis>/<emphasis>29</emphasis>/b7f54b2df7773722d382f4809d650<emphasis>29c</emphasis>486</example>487</para>488489<para>490Кэшируемый ответ сначала записывается во временный файл, а потом этот файл491переименовывается.492Начиная с версии 0.8.9 временные файлы и кэш493могут располагаться на разных файловых системах.494Однако нужно учитывать,495что в этом случае вместо дешёвой операции переименовывания в пределах496одной файловой системы файл копируется с одной файловой системы на другую.497Поэтому лучше, если кэш будет находиться на той же файловой498системе, что и каталог с временными файлами.499Какой из каталогов будет использоваться для временных файлов500определяется параметром <literal>use_temp_path</literal> (1.7.10).501Если параметр не задан или установлен в значение “<literal>on</literal>”,502то будет использоваться каталог, задаваемый директивой503<link id="fastcgi_temp_path"/> для данного location.504Если параметр установлен в значение “<literal>off</literal>”,505то временные файлы будут располагаться непосредственно в каталоге кэша.506</para>507508<para>509Кроме того, все активные ключи и информация о данных хранятся в зоне510разделяемой памяти, <value>имя</value> и <value>размер</value> которой511задаются параметром <literal>keys_zone</literal>.512Зоны размером в 1 мегабайт достаточно для хранения около 8 тысяч ключей.513<note>514Как часть515<commercial_version>коммерческой подписки</commercial_version>516в зоне разделяемой памяти также хранится расширенная517<link doc="ngx_http_api_module.xml" id="http_caches_">информация</link> о кэше,518поэтому для хранения аналогичного количества ключей необходимо указывать519больший размер зоны.520Например521зоны размером в 1 мегабайт достаточно для хранения около 4 тысяч ключей.522</note>523</para>524525<para>526Если к данным кэша не обращаются в течение времени, заданного параметром527<literal>inactive</literal>, то данные удаляются, независимо от их свежести.528По умолчанию <literal>inactive</literal> равен 10 минутам.529</para>530531<para id="fastcgi_cache_path_max_size">532Специальный процесс “cache manager” следит за максимальным размером кэша,533заданным параметром <literal>max_size</literal>,534а также за минимальным объёмом свободного места на файловой системе с кэшем,535заданным параметром <literal>min_free</literal> (1.19.1).536При превышении максимального размера кэша537или недостаточном объёме свободного места538процесс удаляет наименее востребованные данные.539Удаление данных происходит итерациями, настраиваемыми параметрами (1.11.5)540<literal>manager_files</literal>,541<literal>manager_threshold</literal> и542<literal>manager_sleep</literal>.543За одну итерацию загружается не более <literal>manager_files</literal>544элементов (по умолчанию 100).545Время работы одной итерации ограничено параметром546<literal>manager_threshold</literal> (по умолчанию 200 миллисекунд).547Между итерациями делается пауза на время, заданное параметром548<literal>manager_sleep</literal> (по умолчанию 50 миллисекунд).549</para>550551<para>552Через минуту после старта активируется специальный процесс “cache loader”,553который загружает в зону кэша информацию о ранее закэшированных данных,554хранящихся на файловой системе.555Загрузка также происходит итерациями.556За одну итерацию загружается не более <literal>loader_files</literal>557элементов (по умолчанию 100).558Кроме того, время работы одной итерации ограничено параметром559<literal>loader_threshold</literal> (по умолчанию 200 миллисекунд).560Между итерациями делается пауза на время, заданное параметром561<literal>loader_sleep</literal> (по умолчанию 50 миллисекунд).562</para>563564<para>565Кроме того,566следующие параметры доступны как часть567<commercial_version>коммерческой подписки</commercial_version>:568</para>569570<para>571<list type="tag">572573<tag-name id="purger">574<literal>purger</literal>=<literal>on</literal>|<literal>off</literal>575</tag-name>576<tag-desc>577Указывает, будут ли записи в кэше, соответствующие578<link id="fastcgi_cache_purge">маске</link>,579удалены с диска при помощи процесса “cache purger” (1.7.12).580Установка параметра в значение <literal>on</literal>581(по умолчанию <literal>off</literal>)582активирует процесс “cache purger”, который583проходит по всем записям в кэше584и удаляет записи, соответствующие этой маске.585</tag-desc>586587<tag-name id="purger_files">588<literal>purger_files</literal>=<value>число</value>589</tag-name>590<tag-desc>591Задаёт число элементов, которые будут сканироваться за одну итерацию (1.7.12).592По умолчанию <literal>purger_files</literal> равен 10.593</tag-desc>594595<tag-name id="purger_threshold">596<literal>purger_threshold</literal>=<value>время</value>597</tag-name>598<tag-desc>599Задаёт продолжительность одной итерации (1.7.12).600По умолчанию <literal>purger_threshold</literal> равен 50 миллисекундам.601</tag-desc>602603<tag-name id="purger_sleep">604<literal>purger_sleep</literal>=<value>время</value>605</tag-name>606<tag-desc>607Задаёт паузу между итерациями (1.7.12).608По умолчанию <literal>purger_sleep</literal> равен 50 миллисекундам.609</tag-desc>610611</list>612</para>613614<para>615<note>616В версиях 1.7.3, 1.7.7 и 1.11.10 формат заголовка кэша был изменён.617При обновлении на более новую версию nginx618ранее закэшированные ответы будут считаться недействительными.619</note>620</para>621622</directive>623624625<directive name="fastcgi_cache_purge">626<syntax>строка ...</syntax>627<default/>628<context>http</context>629<context>server</context>630<context>location</context>631<appeared-in>1.5.7</appeared-in>632633<para>634Задаёт условия, при которых запрос будет считаться запросом635на очистку кэша.636Если значение хотя бы одного из строковых параметров непустое и не равно “0”,637то запись в кэше с соответствующим638<link id="fastcgi_cache_key">ключом кэширования</link> удаляется.639В результате успешной операции возвращается ответ с кодом640<http-status code="204" text="No Content"/>.641</para>642643<para>644Если <link id="fastcgi_cache_key">ключ кэширования</link>645запроса на очистку заканчивается646звёздочкой (“<literal>*</literal>”), то все записи в кэше, соответствующие647этой маске, будут удалены из кэша.648Тем не менее, эти записи будут оставаться на диске или до момента удаления649из-за <link id="fastcgi_cache_path">отсутствия обращения к данным</link>,650или до обработки их процессом “<link id="purger">cache purger</link>” (1.7.12),651или до попытки клиента получить к ним доступ.652</para>653654<para>655Пример конфигурации:656<example>657fastcgi_cache_path /data/nginx/cache keys_zone=cache_zone:10m;658659map $request_method $purge_method {660PURGE 1;661default 0;662}663664server {665...666location / {667fastcgi_pass http://backend;668fastcgi_cache cache_zone;669fastcgi_cache_key $uri;670fastcgi_cache_purge $purge_method;671}672}673</example>674<note>675Функциональность доступна как часть676<commercial_version>коммерческой подписки</commercial_version>.677</note>678</para>679680</directive>681682683<directive name="fastcgi_cache_revalidate">684<syntax><literal>on</literal> | <literal>off</literal></syntax>685<default>off</default>686<context>http</context>687<context>server</context>688<context>location</context>689<appeared-in>1.5.7</appeared-in>690691<para>692Разрешает ревалидацию просроченных элементов кэша при помощи693условных запросов с полями заголовка694<header>If-Modified-Since</header> и <header>If-None-Match</header>.695</para>696697</directive>698699700<directive name="fastcgi_cache_use_stale">701<syntax>702<literal>error</literal> |703<literal>timeout</literal> |704<literal>invalid_header</literal> |705<literal>updating</literal> |706<literal>http_500</literal> |707<literal>http_503</literal> |708<literal>http_403</literal> |709<literal>http_404</literal> |710<literal>http_429</literal> |711<literal>off</literal>712...</syntax>713<default>off</default>714<context>http</context>715<context>server</context>716<context>location</context>717718<para>719Определяет, в каких случаях можно использовать устаревший закэшированный ответ.720Параметры директивы совпадают с параметрами721директивы <link id="fastcgi_next_upstream"/>.722</para>723724<para>725Параметр <literal>error</literal> также позволяет использовать726устаревший закэшированный ответ при невозможности выбора727FastCGI-сервера для обработки запроса.728</para>729730<para id="fastcgi_cache_use_stale_updating">731Кроме того, дополнительный параметр <literal>updating</literal>732разрешает использовать устаревший закэшированный ответ,733если на данный момент он уже обновляется.734Это позволяет минимизировать число обращений к FastCGI-серверам735при обновлении закэшированных данных.736</para>737738<para>739Использование устаревшего закэшированного ответа740может также быть разрешено непосредственно в заголовке ответа741на определённое количество секунд после того, как ответ устарел (1.11.10).742Такой способ менее приоритетен, чем задание параметров директивы.743<list type="bullet" compact="no">744745<listitem>746Расширение747“<link url="https://datatracker.ietf.org/doc/html/rfc5861#section-3">stale-while-revalidate</link>”748поля заголовка <header>Cache-Control</header> разрешает749использовать устаревший закэшированный ответ,750если на данный момент он уже обновляется.751</listitem>752753<listitem>754Расширение755“<link url="https://datatracker.ietf.org/doc/html/rfc5861#section-4">stale-if-error</link>”756поля заголовка <header>Cache-Control</header> разрешает757использовать устаревший закэшированный ответ в случае ошибки.758</listitem>759760</list>761</para>762763<para>764Чтобы минимизировать число обращений к FastCGI-серверам при765заполнении нового элемента кэша, можно воспользоваться директивой766<link id="fastcgi_cache_lock"/>.767</para>768769</directive>770771772<directive name="fastcgi_cache_valid">773<syntax>[<value>код</value> ...] <value>время</value></syntax>774<default/>775<context>http</context>776<context>server</context>777<context>location</context>778779<para>780Задаёт время кэширования для разных кодов ответа.781Например, директивы782<example>783fastcgi_cache_valid 200 302 10m;784fastcgi_cache_valid 404 1m;785</example>786задают время кэширования 10 минут для ответов с кодами 200 и 302787и 1 минуту для ответов с кодом 404.788</para>789790<para>791Если указано только <value>время</value> кэширования,792<example>793fastcgi_cache_valid 5m;794</example>795то кэшируются только ответы 200, 301 и 302.796</para>797798<para>799Кроме того, можно кэшировать любые ответы с помощью параметра800<literal>any</literal>:801<example>802fastcgi_cache_valid 200 302 10m;803fastcgi_cache_valid 301 1h;804fastcgi_cache_valid any 1m;805</example>806</para>807808<para>809Параметры кэширования могут также быть заданы непосредственно810в заголовке ответа.811Такой способ приоритетнее, чем задание времени кэширования с помощью директивы.812<list type="bullet" compact="no">813814<listitem>815Поле заголовка <header>X-Accel-Expires</header> задаёт время кэширования816ответа в секундах.817Значение 0 запрещает кэшировать ответ.818Если значение начинается с префикса <literal>@</literal>, оно задаёт абсолютное819время в секундах с начала эпохи, до которого ответ может быть закэширован.820</listitem>821822<listitem>823Если в заголовке нет поля <header>X-Accel-Expires</header>,824параметры кэширования определяются по полям заголовка825<header>Expires</header> или <header>Cache-Control</header>.826</listitem>827828<listitem>829Ответ, в заголовке которого есть поле <header>Set-Cookie</header>,830не будет кэшироваться.831</listitem>832833<listitem>834Ответ, в заголовке которого есть поле <header>Vary</header>835со специальным значением “<literal>*</literal>”,836не будет кэшироваться (1.7.7).837Ответ, в заголовке которого есть поле <header>Vary</header>838с другим значением, будет закэширован839с учётом соответствующих полей заголовка запроса (1.7.7).840</listitem>841842</list>843Обработка одного или более из этих полей заголовка может быть отключена844при помощи директивы <link id="fastcgi_ignore_headers"/>.845</para>846847</directive>848849850<directive name="fastcgi_catch_stderr">851<syntax><value>строка</value></syntax>852<default/>853<context>http</context>854<context>server</context>855<context>location</context>856857<para>858Задаёт строку для поиска в потоке ошибок ответа,859полученного от FastCGI-сервера.860Если <value>строка</value> найдена, то считается, что FastCGI-сервер861вернул <link id="fastcgi_next_upstream">неверный ответ</link>.862Это позволяет обрабатывать ошибки приложений в nginx, например:863<example>864location /php/ {865fastcgi_pass backend:9000;866...867fastcgi_catch_stderr "PHP Fatal error";868fastcgi_next_upstream error timeout invalid_header;869}870</example>871</para>872873</directive>874875876<directive name="fastcgi_connect_timeout">877<syntax><value>время</value></syntax>878<default>60s</default>879<context>http</context>880<context>server</context>881<context>location</context>882883<para>884Задаёт таймаут для установления соединения с FastCGI-сервером.885Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд.886</para>887888</directive>889890891<directive name="fastcgi_force_ranges">892<syntax><literal>on</literal> | <literal>off</literal></syntax>893<default>off</default>894<context>http</context>895<context>server</context>896<context>location</context>897<appeared-in>1.7.7</appeared-in>898899<para>900Включает поддержку диапазонов запрашиваемых байт (byte-range)901для кэшированных и некэшированных ответов FastCGI-сервера902вне зависимости от наличия поля <header>Accept-Ranges</header>903в заголовках этих ответов.904</para>905906</directive>907908909<directive name="fastcgi_hide_header">910<syntax><value>поле</value></syntax>911<default/>912<context>http</context>913<context>server</context>914<context>location</context>915916<para>917По умолчанию918nginx не передаёт клиенту поля заголовка <header>Status</header> и919<header>X-Accel-...</header> из ответа FastCGI-сервера.920Директива <literal>fastcgi_hide_header</literal> задаёт дополнительные поля,921которые не будут передаваться.922Если же передачу полей нужно разрешить, можно воспользоваться923директивой <link id="fastcgi_pass_header"/>.924</para>925926</directive>927928929<directive name="fastcgi_ignore_client_abort">930<syntax><literal>on</literal> | <literal>off</literal></syntax>931<default>off</default>932<context>http</context>933<context>server</context>934<context>location</context>935936<para>937Определяет, закрывать ли соединение с FastCGI-сервером938в случае, если клиент закрыл соединение, не дождавшись ответа.939</para>940941</directive>942943944<directive name="fastcgi_ignore_headers">945<syntax><value>поле</value> ...</syntax>946<default/>947<context>http</context>948<context>server</context>949<context>location</context>950951<para>952Запрещает обработку некоторых полей заголовка из ответа FastCGI-сервера.953В директиве можно указать поля <header>X-Accel-Redirect</header>,954<header>X-Accel-Expires</header>, <header>X-Accel-Limit-Rate</header> (1.1.6),955<header>X-Accel-Buffering</header> (1.1.6),956<header>X-Accel-Charset</header> (1.1.6), <header>Expires</header>,957<header>Cache-Control</header>, <header>Set-Cookie</header> (0.8.44)958и <header>Vary</header> (1.7.7).959</para>960961<para>962Если не запрещено, обработка этих полей заголовка заключается в следующем:963<list type="bullet" compact="no">964965<listitem>966<header>X-Accel-Expires</header>, <header>Expires</header>,967<header>Cache-Control</header>, <header>Set-Cookie</header>968и <header>Vary</header>969задают параметры <link id="fastcgi_cache_valid">кэширования</link> ответа;970</listitem>971972<listitem>973<header>X-Accel-Redirect</header> производит974<link doc="ngx_http_core_module.xml" id="internal">внутреннее975перенаправление</link> на указанный URI;976</listitem>977978<listitem>979<header>X-Accel-Limit-Rate</header> задаёт980<link doc="ngx_http_core_module.xml" id="limit_rate">ограничение981скорости</link> передачи ответа клиенту;982</listitem>983984<listitem>985<header>X-Accel-Buffering</header> включает или выключает986<link id="fastcgi_buffering">буферизацию</link> ответа;987</listitem>988989<listitem>990<header>X-Accel-Charset</header> задаёт желаемую991<link doc="ngx_http_charset_module.xml" id="charset">кодировку</link>992ответа.993</listitem>994995</list>996</para>997998</directive>99910001001<directive name="fastcgi_index">1002<syntax><value>имя</value></syntax>1003<default/>1004<context>http</context>1005<context>server</context>1006<context>location</context>10071008<para>1009Задаёт имя файла, который при создании переменной1010<var>$fastcgi_script_name</var> будет добавляться после URI,1011если URI заканчивается слэшом.1012Например, при таких настройках1013<example>1014fastcgi_index index.php;1015fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;1016</example>1017и запросе “<literal>/page.php</literal>”1018параметр <literal>SCRIPT_FILENAME</literal> будет равен1019“<literal>/home/www/scripts/php/page.php</literal>”,1020а при запросе “<literal>/</literal>”—1021“<literal>/home/www/scripts/php/index.php</literal>”.1022</para>10231024</directive>102510261027<directive name="fastcgi_intercept_errors">1028<syntax><literal>on</literal> | <literal>off</literal></syntax>1029<default>off</default>1030<context>http</context>1031<context>server</context>1032<context>location</context>10331034<para>1035Определяет, передавать ли клиенту ответы FastCGI-сервера с кодом1036больше либо равным 300,1037или же перехватывать их и перенаправлять на обработку nginx’у с помощью1038директивы <link doc="ngx_http_core_module.xml" id="error_page"/>.1039</para>10401041</directive>104210431044<directive name="fastcgi_keep_conn">1045<syntax><literal>on</literal> | <literal>off</literal></syntax>1046<default>off</default>1047<context>http</context>1048<context>server</context>1049<context>location</context>1050<appeared-in>1.1.4</appeared-in>10511052<para>1053По умолчанию FastCGI-сервер будет закрывать соединение сразу же1054после отправки ответа.1055При установке значения <literal>on</literal> nginx указывает1056FastCGI-серверу оставлять соединения открытыми.1057Это в частности требуется для функционирования1058<link doc="ngx_http_upstream_module.xml" id="keepalive">постоянных1059соединений</link> с FastCGI-серверами.1060</para>10611062</directive>106310641065<directive name="fastcgi_limit_rate">1066<syntax><value>скорость</value></syntax>1067<default>0</default>1068<context>http</context>1069<context>server</context>1070<context>location</context>1071<appeared-in>1.7.7</appeared-in>10721073<para>1074Ограничивает скорость чтения ответа от FastCGI-сервера.1075<value>Скорость</value> задаётся в байтах в секунду.1076Значение 0 отключает ограничение скорости.1077Ограничение устанавливается на запрос,1078поэтому, если nginx одновременно1079откроет два соединения к FastCGI-серверу,1080суммарная скорость будет вдвое выше заданного ограничения.1081Ограничение работает только в случае, если включена1082<link id="fastcgi_buffering">буферизация</link> ответов FastCGI-сервера.1083В значении параметра можно использовать переменные (1.27.0).1084</para>10851086</directive>108710881089<directive name="fastcgi_max_temp_file_size">1090<syntax><value>размер</value></syntax>1091<default>1024m</default>1092<context>http</context>1093<context>server</context>1094<context>location</context>10951096<para>1097Если включена <link id="fastcgi_buffering">буферизация</link> ответов1098FastCGI-сервера, и ответ не вмещается целиком в буферы,1099заданные директивами <link id="fastcgi_buffer_size"/> и1100<link id="fastcgi_buffers"/>, часть ответа может быть записана во временный файл.1101Эта директива задаёт максимальный <value>размер</value> временного файла.1102Размер данных, сбрасываемых во временный файл за один раз, задаётся1103директивой <link id="fastcgi_temp_file_write_size"/>.1104</para>11051106<para>1107Значение 0 отключает возможность буферизации ответов во временные файлы.1108</para>11091110<para>1111<note>1112Данное ограничение не распространяется на ответы,1113которые будут <link id="fastcgi_cache">закэшированы</link>1114или <link id="fastcgi_store">сохранены</link> на диске.1115</note>1116</para>11171118</directive>111911201121<directive name="fastcgi_next_upstream">1122<syntax>1123<literal>error</literal> |1124<literal>timeout</literal> |1125<literal>denied</literal> |1126<literal>invalid_header</literal> |1127<literal>http_500</literal> |1128<literal>http_503</literal> |1129<literal>http_403</literal> |1130<literal>http_404</literal> |1131<literal>http_429</literal> |1132<literal>non_idempotent</literal> |1133<literal>off</literal>1134...</syntax>1135<default>error timeout</default>1136<context>http</context>1137<context>server</context>1138<context>location</context>11391140<para>1141Определяет, в каких случаях запрос будет передан следующему серверу:1142<list type="tag">11431144<tag-name><literal>error</literal></tag-name>1145<tag-desc>произошла ошибка соединения с сервером, передачи ему запроса или1146чтения заголовка ответа сервера;</tag-desc>11471148<tag-name><literal>timeout</literal></tag-name>1149<tag-desc>произошёл таймаут во время соединения с сервером,1150передачи ему запроса или чтения заголовка ответа сервера;</tag-desc>11511152<tag-name id="denied"><literal>denied</literal></tag-name>1153<tag-desc>сервер <link id="proxy_allow_upstream">отклонил</link>1154соединение (1.29.3);1155<para>1156<note>1157Параметр доступен как часть1158<commercial_version>коммерческой подписки</commercial_version>.1159</note>1160</para>1161</tag-desc>11621163<tag-name id="invalid_header"><literal>invalid_header</literal></tag-name>1164<tag-desc>сервер вернул пустой или неверный ответ;</tag-desc>11651166<tag-name><literal>http_500</literal></tag-name>1167<tag-desc>сервер вернул ответ с кодом 500;</tag-desc>11681169<tag-name><literal>http_503</literal></tag-name>1170<tag-desc>сервер вернул ответ с кодом 503;</tag-desc>11711172<tag-name><literal>http_403</literal></tag-name>1173<tag-desc>сервер вернул ответ с кодом 403;</tag-desc>11741175<tag-name><literal>http_404</literal></tag-name>1176<tag-desc>сервер вернул ответ с кодом 404;</tag-desc>11771178<tag-name><literal>http_429</literal></tag-name>1179<tag-desc>сервер вернул ответ с кодом 429 (1.11.13);</tag-desc>11801181<tag-name id="non_idempotent"><literal>non_idempotent</literal></tag-name>1182<tag-desc>обычно запросы с1183<link url="https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2">неидемпотентным</link>1184методом1185(<literal>POST</literal>, <literal>LOCK</literal>, <literal>PATCH</literal>)1186не передаются на другой сервер,1187если запрос серверу группы уже был отправлен (1.9.13);1188включение параметра явно разрешает повторять подобные запросы;1189</tag-desc>119011911192<tag-name><literal>off</literal></tag-name>1193<tag-desc>запрещает передачу запроса следующему серверу.</tag-desc>11941195</list>1196</para>11971198<para>1199Необходимо понимать, что передача запроса следующему серверу возможна1200только при условии, что клиенту ещё ничего не передавалось.1201То есть, если ошибка или таймаут возникли в середине передачи ответа,1202то исправить это уже невозможно.1203</para>12041205<para>1206Директива также определяет, что считается1207<link doc="ngx_http_upstream_module.xml" id="max_fails">неудачной1208попыткой</link> работы с сервером.1209Случаи <literal>error</literal>, <literal>timeout</literal>,1210<literal>denied</literal> и1211<literal>invalid_header</literal>1212всегда считаются неудачными попытками, даже если они не указаны в директиве.1213Случаи <literal>http_500</literal>, <literal>http_503</literal>1214и <literal>http_429</literal>1215считаются неудачными попытками, только если они указаны в директиве.1216Случаи <literal>http_403</literal> и <literal>http_404</literal>1217никогда не считаются неудачными попытками.1218</para>12191220<para>1221Передача запроса следующему серверу может быть ограничена по1222<link id="fastcgi_next_upstream_tries">количеству попыток</link>1223и по <link id="fastcgi_next_upstream_timeout">времени</link>.1224</para>12251226</directive>122712281229<directive name="fastcgi_next_upstream_timeout">1230<syntax><value>время</value></syntax>1231<default>0</default>1232<context>http</context>1233<context>server</context>1234<context>location</context>1235<appeared-in>1.7.5</appeared-in>12361237<para>1238Ограничивает время, в течение которого возможна передача запроса1239<link id="fastcgi_next_upstream">следующему серверу</link>.1240Значение <literal>0</literal> отключает это ограничение.1241</para>12421243</directive>124412451246<directive name="fastcgi_next_upstream_tries">1247<syntax><value>число</value></syntax>1248<default>0</default>1249<context>http</context>1250<context>server</context>1251<context>location</context>1252<appeared-in>1.7.5</appeared-in>12531254<para>1255Ограничивает число допустимых попыток для передачи запроса1256<link id="fastcgi_next_upstream">следующему серверу</link>.1257Значение <literal>0</literal> отключает это ограничение.1258</para>12591260</directive>126112621263<directive name="fastcgi_no_cache">1264<syntax><value>строка</value> ...</syntax>1265<default/>1266<context>http</context>1267<context>server</context>1268<context>location</context>12691270<para>1271Задаёт условия, при которых ответ не будет сохраняться в кэш.1272Если значение хотя бы одного из строковых параметров непустое и не равно “0”,1273то ответ не будет сохранён:1274<example>1275fastcgi_no_cache $cookie_nocache $arg_nocache$arg_comment;1276fastcgi_no_cache $http_pragma $http_authorization;1277</example>1278Можно использовать совместно с директивой <link id="fastcgi_cache_bypass"/>.1279</para>12801281</directive>128212831284<directive name="fastcgi_param">1285<syntax>1286<value>параметр</value> <value>значение</value>1287[<literal>if_not_empty</literal>]</syntax>1288<default>HTTP_HOST $host$is_request_port$request_port</default>1289<context>http</context>1290<context>server</context>1291<context>location</context>12921293<para>1294Задаёт <value>параметр</value>, который будет передаваться FastCGI-серверу.1295В качестве значения можно использовать текст, переменные и их комбинации.1296Директивы наследуются с предыдущего уровня конфигурации при условии, что1297на данном уровне не описаны свои директивы <literal>fastcgi_param</literal>.1298</para>12991300<para>1301Ниже приведён пример минимально необходимых параметров для PHP:1302<example>1303fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;1304fastcgi_param QUERY_STRING $query_string;1305</example>1306</para>13071308<para>1309Параметр <literal>SCRIPT_FILENAME</literal> используется в PHP для1310определения имени скрипта, а в параметре <literal>QUERY_STRING</literal>1311передаются параметры запроса.1312</para>13131314<para>1315Если скрипты обрабатывают запросы <literal>POST</literal>, то нужны1316ещё три параметра:1317<example>1318fastcgi_param REQUEST_METHOD $request_method;1319fastcgi_param CONTENT_TYPE $content_type;1320fastcgi_param CONTENT_LENGTH $content_length;1321</example>1322</para>13231324<para>1325Если PHP был собран с параметром конфигурации1326<literal>--enable-force-cgi-redirect</literal>, то нужно передавать1327параметр <literal>REDIRECT_STATUS</literal> со значением “200”:1328<example>1329fastcgi_param REDIRECT_STATUS 200;1330</example>1331</para>13321333<para>1334Если директива указана с <literal>if_not_empty</literal> (1.1.11),1335то такой параметр с пустым значением передаваться на сервер не будет:1336<example>1337fastcgi_param HTTPS $https if_not_empty;1338</example>1339</para>13401341</directive>134213431344<directive name="fastcgi_pass">1345<syntax><value>адрес</value></syntax>1346<default/>1347<context>location</context>1348<context>if в location</context>13491350<para>1351Задаёт адрес FastCGI-сервера.1352Адрес может быть указан в виде доменного имени или IP-адреса,1353и порта:1354<example>1355fastcgi_pass localhost:9000;1356</example>1357или в виде пути UNIX-сокета:1358<example>1359fastcgi_pass unix:/tmp/fastcgi.socket;1360</example>1361</para>13621363<para>1364Если доменному имени соответствует несколько адресов, то все они будут1365использоваться по очереди (round-robin).1366И, кроме того, адрес может быть1367<link doc="ngx_http_upstream_module.xml">группой серверов</link>.1368</para>13691370<para>1371В значении параметра можно использовать переменные.1372В этом случае, если адрес указан в виде доменного имени,1373имя ищется среди описанных1374<link doc="ngx_http_upstream_module.xml">групп серверов</link>1375и если не найдено, то определяется с помощью1376<link doc="ngx_http_core_module.xml" id="resolver"/>’а.1377</para>13781379</directive>138013811382<directive name="fastcgi_pass_header">1383<syntax><value>поле</value></syntax>1384<default/>1385<context>http</context>1386<context>server</context>1387<context>location</context>13881389<para>1390Разрешает передавать от FastCGI-сервера клиенту1391<link id="fastcgi_hide_header">запрещённые для передачи</link> поля заголовка.1392</para>13931394</directive>139513961397<directive name="fastcgi_pass_request_body">1398<syntax><literal>on</literal> | <literal>off</literal></syntax>1399<default>on</default>1400<context>http</context>1401<context>server</context>1402<context>location</context>14031404<para>1405Позволяет запретить передачу исходного тела запроса1406на FastCGI-сервер.1407См. также директиву <link id="fastcgi_pass_request_headers"/>.1408</para>14091410</directive>141114121413<directive name="fastcgi_pass_request_headers">1414<syntax><literal>on</literal> | <literal>off</literal></syntax>1415<default>on</default>1416<context>http</context>1417<context>server</context>1418<context>location</context>14191420<para>1421Позволяет запретить передачу полей заголовка исходного запроса на1422FastCGI-сервер.1423См. также директивы <link id="fastcgi_pass_request_body"/>.1424</para>14251426</directive>142714281429<directive name="fastcgi_read_timeout">1430<syntax><value>время</value></syntax>1431<default>60s</default>1432<context>http</context>1433<context>server</context>1434<context>location</context>14351436<para>1437Задаёт таймаут при чтении ответа FastCGI-сервера.1438Таймаут устанавливается не на всю передачу ответа,1439а только между двумя операциями чтения.1440Если по истечении этого времени FastCGI-сервер ничего не передаст,1441соединение закрывается.1442</para>14431444</directive>144514461447<directive name="fastcgi_request_buffering">1448<syntax><literal>on</literal> | <literal>off</literal></syntax>1449<default>on</default>1450<context>http</context>1451<context>server</context>1452<context>location</context>1453<appeared-in>1.7.11</appeared-in>14541455<para>1456Разрешает или запрещает использовать буферизацию тела запроса клиента.1457</para>14581459<para>1460Если буферизация включена, то тело запроса полностью1461<link doc="ngx_http_core_module.xml" id="client_body_buffer_size">читается</link>1462от клиента перед отправкой запроса на FastCGI-сервер.1463</para>14641465<para>1466Если буферизация выключена, то тело запроса отправляется1467на FastCGI-сервер сразу же по мере его поступления.1468В этом случае запрос не может быть передан1469<link id="fastcgi_next_upstream">следующему серверу</link>,1470если nginx уже начал отправку тела запроса.1471</para>14721473</directive>147414751476<directive name="fastcgi_request_dynamic">1477<syntax><literal>on</literal> | <literal>off</literal></syntax>1478<default>off</default>1479<context>http</context>1480<context>server</context>1481<context>location</context>1482<appeared-in>1.29.3</appeared-in>14831484<para>1485Разрешает или запрещает создание отдельного экземпляра запроса1486для каждого FastCGI-сервера.1487По умолчанию для всех FastCGI-серверов используется единый запрос.1488Если разрешено, то для каждого сервера создаётся отдельный экземпляр запроса,1489что позволяет кастомизировать запрос для конкретного сервера.1490</para>14911492<para>1493<note>1494Директива доступна как часть1495<commercial_version>коммерческой подписки</commercial_version>.1496</note>1497</para>14981499</directive>150015011502<directive name="fastcgi_send_lowat">1503<syntax><value>размер</value></syntax>1504<default>0</default>1505<context>http</context>1506<context>server</context>1507<context>location</context>15081509<para>1510При установке директивы в ненулевое значение nginx будет пытаться минимизировать1511число операций отправки на исходящих соединениях с FastCGI-сервером1512либо при помощи флага <c-def>NOTE_LOWAT</c-def> метода1513<link doc="../events.xml" id="kqueue"/>,1514либо при помощи параметра сокета <c-def>SO_SNDLOWAT</c-def>,1515с указанным <value>размером</value>.1516</para>15171518<para>1519Эта директива игнорируется на Linux, Solaris и Windows.1520</para>15211522</directive>152315241525<directive name="fastcgi_send_timeout">1526<syntax><value>время</value></syntax>1527<default>60s</default>1528<context>http</context>1529<context>server</context>1530<context>location</context>15311532<para>1533Задаёт таймаут при передаче запроса FastCGI-серверу.1534Таймаут устанавливается не на всю передачу запроса,1535а только между двумя операциями записи.1536Если по истечении этого времени FastCGI-сервер не примет новых данных,1537соединение закрывается.1538</para>15391540</directive>154115421543<directive name="fastcgi_socket_keepalive">1544<syntax><literal>on</literal> | <literal>off</literal></syntax>1545<default>off</default>1546<context>http</context>1547<context>server</context>1548<context>location</context>1549<appeared-in>1.15.6</appeared-in>15501551<para>1552Конфигурирует поведение “TCP keepalive”1553для исходящих соединений к FastCGI-серверу.1554По умолчанию для сокета действуют настройки операционной системы.1555Если указано значение “<literal>on</literal>”, то1556для сокета включается параметр <c-def>SO_KEEPALIVE</c-def>.1557</para>15581559</directive>156015611562<directive name="fastcgi_split_path_info">1563<syntax><value>regex</value></syntax>1564<default/>1565<context>location</context>15661567<para>1568Задаёт регулярное выражение, выделяющее значение для переменной1569<var>$fastcgi_path_info</var>.1570Регулярное выражение должно иметь два выделения, из которых первое1571становится значением переменной <var>$fastcgi_script_name</var>,1572а второе—значением переменной <var>$fastcgi_path_info</var>.1573Например, при таких настройках1574<example>1575location ~ ^(.+\.php)(.*)$ {1576fastcgi_split_path_info ^(.+\.php)(.*)$;1577fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;1578fastcgi_param PATH_INFO $fastcgi_path_info;1579</example>1580и запросе “<literal>/show.php/article/0001</literal>”1581параметр <literal>SCRIPT_FILENAME</literal> будет равен1582“<literal>/path/to/php/show.php</literal>”, а параметр1583<literal>PATH_INFO</literal>—“<literal>/article/0001</literal>”.1584</para>15851586</directive>158715881589<directive name="fastcgi_store">1590<syntax>1591<literal>on</literal> |1592<literal>off</literal> |1593<value>строка</value></syntax>1594<default>off</default>1595<context>http</context>1596<context>server</context>1597<context>location</context>15981599<para>1600Разрешает сохранение на диск файлов.1601Параметр <literal>on</literal> сохраняет файлы в соответствии с путями,1602указанными в директивах1603<link doc="ngx_http_core_module.xml" id="alias"/> или1604<link doc="ngx_http_core_module.xml" id="root"/>.1605Параметр <literal>off</literal> запрещает сохранение файлов.1606Кроме того, имя файла можно задать явно с помощью строки с переменными:1607<example>1608fastcgi_store /data/www$original_uri;1609</example>1610</para>16111612<para>1613Время изменения файлов выставляется согласно полученному полю1614<header>Last-Modified</header> в заголовке ответа.1615Ответ сначала записывается во временный файл, а потом этот файл1616переименовывается.1617Начиная с версии 0.8.9 временный файл и постоянное место хранения ответа1618могут располагаться на разных файловых системах.1619Однако нужно учитывать,1620что в этом случае вместо дешёвой операции переименовывания в пределах1621одной файловой системы файл копируется с одной файловой системы на другую.1622Поэтому лучше, если сохраняемые файлы будут находиться на той же файловой1623системе, что и каталог с временными файлами, задаваемый директивой1624<link id="fastcgi_temp_path"/> для данного location.1625</para>16261627<para>1628Директиву можно использовать для создания локальных копий статических1629неизменяемых файлов, например, так:1630<example>1631location /images/ {1632root /data/www;1633error_page 404 = /fetch$uri;1634}16351636location /fetch/ {1637internal;16381639fastcgi_pass backend:9000;1640...16411642fastcgi_store on;1643fastcgi_store_access user:rw group:rw all:r;1644fastcgi_temp_path /data/temp;16451646alias /data/www/;1647}1648</example>1649</para>16501651</directive>165216531654<directive name="fastcgi_store_access">1655<syntax><value>пользователи</value>:<value>права</value> ...</syntax>1656<default>user:rw</default>1657<context>http</context>1658<context>server</context>1659<context>location</context>16601661<para>1662Задаёт права доступа для создаваемых файлов и каталогов, например,1663<example>1664fastcgi_store_access user:rw group:rw all:r;1665</example>1666</para>16671668<para>1669Если заданы какие-либо права для <literal>group</literal> или1670<literal>all</literal>, то права для <literal>user</literal>1671указывать необязательно:1672<example>1673fastcgi_store_access group:rw all:r;1674</example>1675</para>16761677</directive>167816791680<directive name="fastcgi_temp_file_write_size">1681<syntax><value>размер</value></syntax>1682<default>8k|16k</default>1683<context>http</context>1684<context>server</context>1685<context>location</context>16861687<para>1688Ограничивает <value>размер</value> данных, сбрасываемых во временный файл1689за один раз, при включённой буферизации ответов FastCGI-сервера1690во временные файлы.1691По умолчанию <value>размер</value> ограничен двумя буферами, заданными1692директивами <link id="fastcgi_buffer_size"/> и <link id="fastcgi_buffers"/>.1693Максимальный размер временного файла задаётся директивой1694<link id="fastcgi_max_temp_file_size"/>.1695</para>16961697</directive>169816991700<directive name="fastcgi_temp_path">1701<syntax>1702<value>путь</value>1703[<value>уровень1</value>1704[<value>уровень2</value>1705[<value>уровень3</value>]]]</syntax>1706<default>fastcgi_temp</default>1707<context>http</context>1708<context>server</context>1709<context>location</context>17101711<para>1712Задаёт имя каталога для хранения временных файлов с данными,1713полученными от FastCGI-серверов.1714В каталоге может использоваться иерархия подкаталогов до трёх уровней.1715Например, при такой конфигурации1716<example>1717fastcgi_temp_path /spool/nginx/fastcgi_temp 1 2;1718</example>1719временный файл будет следующего вида:1720<example>1721/spool/nginx/fastcgi_temp/<emphasis>7</emphasis>/<emphasis>45</emphasis>/00000123<emphasis>457</emphasis>1722</example>1723</para>17241725<para>1726См. также параметр <literal>use_temp_path</literal> директивы1727<link id="fastcgi_cache_path"/>.1728</para>17291730</directive>17311732</section>173317341735<section id="parameters" name="Параметры, передаваемые FastCGI-серверу">17361737<para>1738Поля заголовка HTTP-запроса передаются FastCGI-серверу в виде параметров.1739В приложениях и скриптах, запущенных в виде FastCGI-сервера,1740эти параметры обычно доступны в виде переменных среды.1741Например, поле заголовка <header>User-Agent</header> передаётся как параметр1742<literal>HTTP_USER_AGENT</literal>.1743Кроме полей заголовка HTTP-запроса можно передавать произвольные параметры1744с помощью директивы <link id="fastcgi_param"/>.1745</para>17461747</section>174817491750<section id="variables" name="Встроенные переменные">17511752<para>1753В модуле <literal>ngx_http_fastcgi_module</literal> есть встроенные переменные,1754которые можно использовать для формирования параметров с помощью директивы1755<link id="fastcgi_param"/>:1756<list type="tag">17571758<tag-name id="var_fastcgi_script_name"><var>$fastcgi_script_name</var>1759</tag-name>1760<tag-desc>1761URI запроса или же, если URI заканчивается слэшом,1762то URI запроса, дополненное именем индексного файла, задаваемого директивой1763<link id="fastcgi_index"/>.1764Эту переменную можно использовать для задания параметров1765<literal>SCRIPT_FILENAME</literal> и <literal>PATH_TRANSLATED</literal>,1766используемых, в частности, для определения имени скрипта в PHP.1767Например, для запроса “<literal>/info/</literal>” и при использовании1768директив1769<example>1770fastcgi_index index.php;1771fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;1772</example>1773параметр <literal>SCRIPT_FILENAME</literal> будет равен1774“<literal>/home/www/scripts/php/info/index.php</literal>”.17751776<para>1777При использовании директивы <link id="fastcgi_split_path_info"/>1778переменная <var>$fastcgi_script_name</var> равна значению первого выделения,1779задаваемого этой директивой.1780</para>1781</tag-desc>17821783<tag-name id="var_fastcgi_path_info"><var>$fastcgi_path_info</var></tag-name>1784<tag-desc>значение второго выделения, задаваемого директивой1785<link id="fastcgi_split_path_info"/>.1786Эту переменную можно использовать для задания параметра1787<literal>PATH_INFO</literal>.1788</tag-desc>17891790</list>1791</para>17921793</section>17941795</module>179617971798