Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/ru/docs/http/ngx_http_fastcgi_module.xml
1 views
1
<?xml version="1.0"?>
2
3
<!--
4
Copyright (C) Igor Sysoev
5
Copyright (C) Nginx, Inc.
6
-->
7
8
<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
9
10
<module name="Модуль ngx_http_fastcgi_module"
11
link="/ru/docs/http/ngx_http_fastcgi_module.html"
12
lang="ru"
13
rev="56">
14
15
<section id="summary">
16
17
<para>
18
Модуль <literal>ngx_http_fastcgi_module</literal> позволяет передавать
19
запросы FastCGI-серверу.
20
</para>
21
22
</section>
23
24
25
<section id="example" name="Пример конфигурации">
26
27
<para>
28
<example>
29
location / {
30
fastcgi_pass localhost:9000;
31
fastcgi_index index.php;
32
33
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
34
fastcgi_param QUERY_STRING $query_string;
35
fastcgi_param REQUEST_METHOD $request_method;
36
fastcgi_param CONTENT_TYPE $content_type;
37
fastcgi_param CONTENT_LENGTH $content_length;
38
}
39
</example>
40
</para>
41
42
</section>
43
44
45
<section id="directives" name="Директивы">
46
47
<directive name="fastcgi_allow_upstream">
48
<syntax><value>строка</value> ...</syntax>
49
<default/>
50
<context>http</context>
51
<context>server</context>
52
<context>location</context>
53
<appeared-in>1.29.3</appeared-in>
54
55
<para>
56
Задаёт условия, при которых доступ к FastCGI-серверу
57
будет разрешён или <link id="denied">запрещён</link>.
58
Если все значения строковых параметров непустые
59
и не равны “0”, то доступ разрешён.
60
Условия проверяются каждый раз
61
перед установлением соединения с FastCGI-сервером.
62
В значении параметров допустимо использование переменных:
63
<example>
64
geo $upstream_last_addr $allow {
65
volatile;
66
10.10.0.0/24 1;
67
}
68
69
server {
70
listen 127.0.0.1:8080;
71
72
location / {
73
fastcgi_pass localhost:9000;
74
fastcgi_allow_upstream $allow;
75
...
76
}
77
}
78
</example>
79
</para>
80
81
<para>
82
<note>
83
Директива доступна как часть
84
<commercial_version>коммерческой подписки</commercial_version>.
85
</note>
86
</para>
87
88
</directive>
89
90
91
<directive name="fastcgi_bind">
92
<syntax>
93
<value>адрес</value>
94
[<literal>transparent</literal>] |
95
<literal>off</literal></syntax>
96
<default/>
97
<context>http</context>
98
<context>server</context>
99
<context>location</context>
100
<appeared-in>0.8.22</appeared-in>
101
102
<para>
103
Задаёт локальный IP-адрес с необязательным портом (1.11.2),
104
который будет использоваться в исходящих соединениях с FastCGI-сервером.
105
В значении параметра допустимо использование переменных (1.3.12).
106
Специальное значение <literal>off</literal> (1.3.12) отменяет действие
107
унаследованной с предыдущего уровня конфигурации
108
директивы <literal>fastcgi_bind</literal>, позволяя системе
109
самостоятельно выбирать локальный IP-адрес и порт.
110
</para>
111
112
<para id="fastcgi_bind_transparent">
113
Параметр <literal>transparent</literal> (1.11.0) позволяет
114
задать нелокальный IP-aдрес, который будет использоваться в
115
исходящих соединениях с FastCGI-сервером,
116
например, реальный IP-адрес клиента:
117
<example>
118
fastcgi_bind $remote_addr transparent;
119
</example>
120
Для работы параметра
121
обычно требуется
122
запустить рабочие процессы nginx с привилегиями
123
<link doc="../ngx_core_module.xml" id="user">суперпользователя</link>.
124
В Linux этого не требуется (1.13.8), так как если
125
указан параметр <literal>transparent</literal>, то рабочие процессы
126
наследуют capability <literal>CAP_NET_RAW</literal> из главного процесса.
127
Также необходимо настроить таблицу маршрутизации ядра
128
для перехвата сетевого трафика с FastCGI-сервера.
129
</para>
130
131
</directive>
132
133
134
<directive name="fastcgi_bind_dynamic">
135
<syntax><literal>on</literal> | <literal>off</literal></syntax>
136
<default>off</default>
137
<context>http</context>
138
<context>server</context>
139
<context>location</context>
140
<appeared-in>1.29.3</appeared-in>
141
142
<para>
143
Если включено, операция <link id="fastcgi_bind">bind</link> осуществляется
144
при каждой попытке соединения.
145
</para>
146
147
<para>
148
<note>
149
Директива доступна как часть
150
<commercial_version>коммерческой подписки</commercial_version>.
151
</note>
152
</para>
153
154
</directive>
155
156
157
<directive name="fastcgi_buffer_size">
158
<syntax><value>размер</value></syntax>
159
<default>4k|8k</default>
160
<context>http</context>
161
<context>server</context>
162
<context>location</context>
163
164
<para>
165
Задаёт <value>размер</value> буфера, в который будет читаться
166
первая часть ответа, получаемого от FastCGI-сервера.
167
В этой части ответа находится, как правило, небольшой заголовок ответа;
168
если его размер больше заданного, то такой ответ считается
169
<link id="invalid_header">неверным</link>.
170
По умолчанию размер одного буфера равен размеру страницы памяти.
171
В зависимости от платформы это или 4K, или 8K,
172
однако его можно сделать меньше.
173
</para>
174
175
</directive>
176
177
178
<directive name="fastcgi_buffering">
179
<syntax><literal>on</literal> | <literal>off</literal></syntax>
180
<default>on</default>
181
<context>http</context>
182
<context>server</context>
183
<context>location</context>
184
<appeared-in>1.5.6</appeared-in>
185
186
<para>
187
Разрешает или запрещает использовать буферизацию ответов FastCGI-сервера.
188
</para>
189
190
<para>
191
Если буферизация включена, то nginx принимает ответ FastCGI-сервера
192
как можно быстрее, сохраняя его в буферы, заданные директивами
193
<link id="fastcgi_buffer_size"/> и <link id="fastcgi_buffers"/>.
194
Если ответ не вмещается целиком в память, то его часть может быть записана
195
на диск во <link id="fastcgi_temp_path">временный файл</link>.
196
Запись во временные файлы контролируется директивами
197
<link id="fastcgi_max_temp_file_size"/> и
198
<link id="fastcgi_temp_file_write_size"/>.
199
</para>
200
201
<para>
202
Если буферизация выключена, то ответ синхронно передаётся клиенту сразу же
203
по мере его поступления.
204
nginx не пытается считать весь ответ FastCGI-сервера.
205
Максимальный размер данных, который nginx может принять от сервера
206
за один раз, задаётся директивой <link id="fastcgi_buffer_size"/>.
207
</para>
208
209
<para>
210
Буферизация может быть также включена или выключена путём передачи
211
значения “<literal>yes</literal>” или “<literal>no</literal>” в поле
212
<header>X-Accel-Buffering</header> заголовка ответа.
213
Эту возможность можно запретить с помощью директивы
214
<link id="fastcgi_ignore_headers"/>.
215
</para>
216
217
</directive>
218
219
220
<directive name="fastcgi_buffers">
221
<syntax><value>число</value> <value>размер</value></syntax>
222
<default>8 4k|8k</default>
223
<context>http</context>
224
<context>server</context>
225
<context>location</context>
226
227
<para>
228
Задаёт <value>число</value> и <value>размер</value> буферов
229
для одного соединения,
230
в которые будет читаться ответ, получаемый от FastCGI-сервера.
231
По умолчанию размер одного буфера равен размеру страницы.
232
В зависимости от платформы это или 4K, или 8K.
233
</para>
234
235
</directive>
236
237
238
<directive name="fastcgi_busy_buffers_size">
239
<syntax><value>размер</value></syntax>
240
<default>8k|16k</default>
241
<context>http</context>
242
<context>server</context>
243
<context>location</context>
244
245
<para>
246
При включённой <link id="fastcgi_buffering">буферизации</link> ответов
247
FastCGI-сервера, ограничивает суммарный <value>размер</value>
248
буферов, которые могут быть заняты для отправки ответа клиенту, пока
249
ответ ещё не прочитан целиком.
250
Оставшиеся буферы тем временем могут использоваться для чтения ответа
251
и, при необходимости, буферизации части ответа во временный файл.
252
По умолчанию <value>размер</value> ограничен двумя буферами, заданными
253
директивами <link id="fastcgi_buffer_size"/> и <link id="fastcgi_buffers"/>.
254
</para>
255
256
</directive>
257
258
259
<directive name="fastcgi_cache">
260
<syntax><value>зона</value> | <literal>off</literal></syntax>
261
<default>off</default>
262
<context>http</context>
263
<context>server</context>
264
<context>location</context>
265
266
<para>
267
Задаёт зону разделяемой памяти, используемой для кэширования.
268
Одна и та же зона может использоваться в нескольких местах.
269
В значении параметра можно использовать переменные (1.7.9).
270
Параметр <literal>off</literal> запрещает кэширование, унаследованное
271
с предыдущего уровня конфигурации.
272
</para>
273
274
</directive>
275
276
277
<directive name="fastcgi_cache_background_update">
278
<syntax><literal>on</literal> | <literal>off</literal></syntax>
279
<default>off</default>
280
<context>http</context>
281
<context>server</context>
282
<context>location</context>
283
<appeared-in>1.11.10</appeared-in>
284
285
<para>
286
Позволяет запустить фоновый подзапрос
287
для обновления просроченного элемента кэша,
288
в то время как клиенту возвращается устаревший закэшированный ответ.
289
Использование устаревшего закэшированного ответа в момент его обновления
290
должно быть
291
<link id="fastcgi_cache_use_stale_updating">разрешено</link>.
292
</para>
293
294
</directive>
295
296
297
<directive name="fastcgi_cache_bypass">
298
<syntax><value>строка</value> ...</syntax>
299
<default/>
300
<context>http</context>
301
<context>server</context>
302
<context>location</context>
303
304
<para>
305
Задаёт условия, при которых ответ не будет браться из кэша.
306
Если значение хотя бы одного из строковых параметров непустое и не равно “0”,
307
то ответ не берётся из кэша:
308
<example>
309
fastcgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
310
fastcgi_cache_bypass $http_pragma $http_authorization;
311
</example>
312
Можно использовать совместно с директивой <link id="fastcgi_no_cache"/>.
313
</para>
314
315
</directive>
316
317
318
<directive name="fastcgi_cache_key">
319
<syntax><value>строка</value></syntax>
320
<default/>
321
<context>http</context>
322
<context>server</context>
323
<context>location</context>
324
325
<para>
326
Задаёт ключ для кэширования, например,
327
<example>
328
fastcgi_cache_key localhost:9000$request_uri;
329
</example>
330
</para>
331
332
</directive>
333
334
335
<directive name="fastcgi_cache_lock">
336
<syntax><literal>on</literal> | <literal>off</literal></syntax>
337
<default>off</default>
338
<context>http</context>
339
<context>server</context>
340
<context>location</context>
341
<appeared-in>1.1.12</appeared-in>
342
343
<para>
344
Если включено, одновременно только одному запросу будет позволено
345
заполнить новый элемент кэша, идентифицируемый согласно директиве
346
<link id="fastcgi_cache_key"/>, передав запрос на FastCGI-сервер.
347
Остальные запросы этого же элемента будут либо ожидать
348
появления ответа в кэше, либо освобождения блокировки
349
этого элемента, в течение времени, заданного директивой
350
<link id="fastcgi_cache_lock_timeout"/>.
351
</para>
352
353
</directive>
354
355
356
<directive name="fastcgi_cache_lock_age">
357
<syntax><value>время</value></syntax>
358
<default>5s</default>
359
<context>http</context>
360
<context>server</context>
361
<context>location</context>
362
<appeared-in>1.7.8</appeared-in>
363
364
<para>
365
Если последний запрос, переданный на FastCGI-сервер
366
для заполнения нового элемента кэша,
367
не завершился за указанное <value>время</value>,
368
на FastCGI-сервер может быть передан ещё один запрос.
369
</para>
370
371
</directive>
372
373
374
<directive name="fastcgi_cache_lock_timeout">
375
<syntax><value>время</value></syntax>
376
<default>5s</default>
377
<context>http</context>
378
<context>server</context>
379
<context>location</context>
380
<appeared-in>1.1.12</appeared-in>
381
382
<para>
383
Задаёт таймаут для <link id="fastcgi_cache_lock"/>.
384
По истечении указанного <value>времени</value>
385
запрос будет передан на FastCGI-сервер,
386
однако ответ не будет закэширован.
387
<note>
388
До версии 1.7.8 такой ответ мог быть закэширован.
389
</note>
390
</para>
391
392
</directive>
393
394
395
<directive name="fastcgi_cache_max_range_offset">
396
<syntax><value>число</value></syntax>
397
<default/>
398
<context>http</context>
399
<context>server</context>
400
<context>location</context>
401
<appeared-in>1.11.6</appeared-in>
402
403
<para>
404
Задаёт смещение в байтах для запросов с указанием диапазона запрашиваемых байт
405
(byte-range requests).
406
Если диапазон находится за указанным смещением,
407
range-запрос будет передан на FastCGI-сервер
408
и ответ не будет закэширован.
409
</para>
410
411
</directive>
412
413
414
<directive name="fastcgi_cache_methods">
415
<syntax>
416
<literal>GET</literal> |
417
<literal>HEAD</literal> |
418
<literal>POST</literal>
419
...</syntax>
420
<default>GET HEAD</default>
421
<context>http</context>
422
<context>server</context>
423
<context>location</context>
424
<appeared-in>0.7.59</appeared-in>
425
426
<para>
427
Если метод запроса клиента указан в этой директиве,
428
то ответ будет закэширован.
429
Методы “<literal>GET</literal>” и “<literal>HEAD</literal>” всегда добавляются
430
в список, но тем не менее рекомендуется перечислять их явно.
431
См. также директиву <link id="fastcgi_no_cache"/>.
432
</para>
433
434
</directive>
435
436
437
<directive name="fastcgi_cache_min_uses">
438
<syntax><value>число</value></syntax>
439
<default>1</default>
440
<context>http</context>
441
<context>server</context>
442
<context>location</context>
443
444
<para>
445
Задаёт <value>число</value> запросов, после которого ответ будет закэширован.
446
</para>
447
448
</directive>
449
450
451
<directive name="fastcgi_cache_path">
452
<syntax>
453
<value>путь</value>
454
[<literal>levels</literal>=<value>уровни</value>]
455
[<literal>use_temp_path</literal>=<literal>on</literal>|<literal>off</literal>]
456
<literal>keys_zone</literal>=<value>имя</value>:<value>размер</value>
457
[<literal>inactive</literal>=<value>время</value>]
458
[<literal>max_size</literal>=<value>размер</value>]
459
[<literal>min_free</literal>=<value>размер</value>]
460
[<literal>manager_files</literal>=<value>число</value>]
461
[<literal>manager_sleep</literal>=<value>время</value>]
462
[<literal>manager_threshold</literal>=<value>время</value>]
463
[<literal>loader_files</literal>=<value>число</value>]
464
[<literal>loader_sleep</literal>=<value>время</value>]
465
[<literal>loader_threshold</literal>=<value>время</value>]
466
[<literal>purger</literal>=<literal>on</literal>|<literal>off</literal>]
467
[<literal>purger_files</literal>=<value>число</value>]
468
[<literal>purger_sleep</literal>=<value>время</value>]
469
[<literal>purger_threshold</literal>=<value>время</value>]</syntax>
470
<default/>
471
<context>http</context>
472
473
<para>
474
Задаёт путь и другие параметры кэша.
475
Данные кэша хранятся в файлах.
476
Ключом и именем файла в кэше является результат функции MD5
477
от проксированного URL.
478
Параметр <literal>levels</literal> задаёт уровни иерархии кэша:
479
можно задать от 1 до 3 уровней, на каждом уровне допускаются значения 1 или 2.
480
Например, при использовании
481
<example>
482
fastcgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
483
</example>
484
имена файлов в кэше будут такого вида:
485
<example>
486
/data/nginx/cache/<emphasis>c</emphasis>/<emphasis>29</emphasis>/b7f54b2df7773722d382f4809d650<emphasis>29c</emphasis>
487
</example>
488
</para>
489
490
<para>
491
Кэшируемый ответ сначала записывается во временный файл, а потом этот файл
492
переименовывается.
493
Начиная с версии 0.8.9 временные файлы и кэш
494
могут располагаться на разных файловых системах.
495
Однако нужно учитывать,
496
что в этом случае вместо дешёвой операции переименовывания в пределах
497
одной файловой системы файл копируется с одной файловой системы на другую.
498
Поэтому лучше, если кэш будет находиться на той же файловой
499
системе, что и каталог с временными файлами.
500
Какой из каталогов будет использоваться для временных файлов
501
определяется параметром <literal>use_temp_path</literal> (1.7.10).
502
Если параметр не задан или установлен в значение “<literal>on</literal>”,
503
то будет использоваться каталог, задаваемый директивой
504
<link id="fastcgi_temp_path"/> для данного location.
505
Если параметр установлен в значение “<literal>off</literal>”,
506
то временные файлы будут располагаться непосредственно в каталоге кэша.
507
</para>
508
509
<para>
510
Кроме того, все активные ключи и информация о данных хранятся в зоне
511
разделяемой памяти, <value>имя</value> и <value>размер</value> которой
512
задаются параметром <literal>keys_zone</literal>.
513
Зоны размером в 1 мегабайт достаточно для хранения около 8 тысяч ключей.
514
<note>
515
Как часть
516
<commercial_version>коммерческой подписки</commercial_version>
517
в зоне разделяемой памяти также хранится расширенная
518
<link doc="ngx_http_api_module.xml" id="http_caches_">информация</link> о кэше,
519
поэтому для хранения аналогичного количества ключей необходимо указывать
520
больший размер зоны.
521
Например
522
зоны размером в 1 мегабайт достаточно для хранения около 4 тысяч ключей.
523
</note>
524
</para>
525
526
<para>
527
Если к данным кэша не обращаются в течение времени, заданного параметром
528
<literal>inactive</literal>, то данные удаляются, независимо от их свежести.
529
По умолчанию <literal>inactive</literal> равен 10 минутам.
530
</para>
531
532
<para id="fastcgi_cache_path_max_size">
533
Специальный процесс “cache manager” следит за максимальным размером кэша,
534
заданным параметром <literal>max_size</literal>,
535
а также за минимальным объёмом свободного места на файловой системе с кэшем,
536
заданным параметром <literal>min_free</literal> (1.19.1).
537
При превышении максимального размера кэша
538
или недостаточном объёме свободного места
539
процесс удаляет наименее востребованные данные.
540
Удаление данных происходит итерациями, настраиваемыми параметрами (1.11.5)
541
<literal>manager_files</literal>,
542
<literal>manager_threshold</literal> и
543
<literal>manager_sleep</literal>.
544
За одну итерацию загружается не более <literal>manager_files</literal>
545
элементов (по умолчанию 100).
546
Время работы одной итерации ограничено параметром
547
<literal>manager_threshold</literal> (по умолчанию 200 миллисекунд).
548
Между итерациями делается пауза на время, заданное параметром
549
<literal>manager_sleep</literal> (по умолчанию 50 миллисекунд).
550
</para>
551
552
<para>
553
Через минуту после старта активируется специальный процесс “cache loader”,
554
который загружает в зону кэша информацию о ранее закэшированных данных,
555
хранящихся на файловой системе.
556
Загрузка также происходит итерациями.
557
За одну итерацию загружается не более <literal>loader_files</literal>
558
элементов (по умолчанию 100).
559
Кроме того, время работы одной итерации ограничено параметром
560
<literal>loader_threshold</literal> (по умолчанию 200 миллисекунд).
561
Между итерациями делается пауза на время, заданное параметром
562
<literal>loader_sleep</literal> (по умолчанию 50 миллисекунд).
563
</para>
564
565
<para>
566
Кроме того,
567
следующие параметры доступны как часть
568
<commercial_version>коммерческой подписки</commercial_version>:
569
</para>
570
571
<para>
572
<list type="tag">
573
574
<tag-name id="purger">
575
<literal>purger</literal>=<literal>on</literal>|<literal>off</literal>
576
</tag-name>
577
<tag-desc>
578
Указывает, будут ли записи в кэше, соответствующие
579
<link id="fastcgi_cache_purge">маске</link>,
580
удалены с диска при помощи процесса “cache purger” (1.7.12).
581
Установка параметра в значение <literal>on</literal>
582
(по умолчанию <literal>off</literal>)
583
активирует процесс “cache purger”, который
584
проходит по всем записям в кэше
585
и удаляет записи, соответствующие этой маске.
586
</tag-desc>
587
588
<tag-name id="purger_files">
589
<literal>purger_files</literal>=<value>число</value>
590
</tag-name>
591
<tag-desc>
592
Задаёт число элементов, которые будут сканироваться за одну итерацию (1.7.12).
593
По умолчанию <literal>purger_files</literal> равен 10.
594
</tag-desc>
595
596
<tag-name id="purger_threshold">
597
<literal>purger_threshold</literal>=<value>время</value>
598
</tag-name>
599
<tag-desc>
600
Задаёт продолжительность одной итерации (1.7.12).
601
По умолчанию <literal>purger_threshold</literal> равен 50 миллисекундам.
602
</tag-desc>
603
604
<tag-name id="purger_sleep">
605
<literal>purger_sleep</literal>=<value>время</value>
606
</tag-name>
607
<tag-desc>
608
Задаёт паузу между итерациями (1.7.12).
609
По умолчанию <literal>purger_sleep</literal> равен 50 миллисекундам.
610
</tag-desc>
611
612
</list>
613
</para>
614
615
<para>
616
<note>
617
В версиях 1.7.3, 1.7.7 и 1.11.10 формат заголовка кэша был изменён.
618
При обновлении на более новую версию nginx
619
ранее закэшированные ответы будут считаться недействительными.
620
</note>
621
</para>
622
623
</directive>
624
625
626
<directive name="fastcgi_cache_purge">
627
<syntax>строка ...</syntax>
628
<default/>
629
<context>http</context>
630
<context>server</context>
631
<context>location</context>
632
<appeared-in>1.5.7</appeared-in>
633
634
<para>
635
Задаёт условия, при которых запрос будет считаться запросом
636
на очистку кэша.
637
Если значение хотя бы одного из строковых параметров непустое и не равно “0”,
638
то запись в кэше с соответствующим
639
<link id="fastcgi_cache_key">ключом кэширования</link> удаляется.
640
В результате успешной операции возвращается ответ с кодом
641
<http-status code="204" text="No Content"/>.
642
</para>
643
644
<para>
645
Если <link id="fastcgi_cache_key">ключ кэширования</link>
646
запроса на очистку заканчивается
647
звёздочкой (“<literal>*</literal>”), то все записи в кэше, соответствующие
648
этой маске, будут удалены из кэша.
649
Тем не менее, эти записи будут оставаться на диске или до момента удаления
650
из-за <link id="fastcgi_cache_path">отсутствия обращения к данным</link>,
651
или до обработки их процессом “<link id="purger">cache purger</link>” (1.7.12),
652
или до попытки клиента получить к ним доступ.
653
</para>
654
655
<para>
656
Пример конфигурации:
657
<example>
658
fastcgi_cache_path /data/nginx/cache keys_zone=cache_zone:10m;
659
660
map $request_method $purge_method {
661
PURGE 1;
662
default 0;
663
}
664
665
server {
666
...
667
location / {
668
fastcgi_pass http://backend;
669
fastcgi_cache cache_zone;
670
fastcgi_cache_key $uri;
671
fastcgi_cache_purge $purge_method;
672
}
673
}
674
</example>
675
<note>
676
Функциональность доступна как часть
677
<commercial_version>коммерческой подписки</commercial_version>.
678
</note>
679
</para>
680
681
</directive>
682
683
684
<directive name="fastcgi_cache_revalidate">
685
<syntax><literal>on</literal> | <literal>off</literal></syntax>
686
<default>off</default>
687
<context>http</context>
688
<context>server</context>
689
<context>location</context>
690
<appeared-in>1.5.7</appeared-in>
691
692
<para>
693
Разрешает ревалидацию просроченных элементов кэша при помощи
694
условных запросов с полями заголовка
695
<header>If-Modified-Since</header> и <header>If-None-Match</header>.
696
</para>
697
698
</directive>
699
700
701
<directive name="fastcgi_cache_use_stale">
702
<syntax>
703
<literal>error</literal> |
704
<literal>timeout</literal> |
705
<literal>invalid_header</literal> |
706
<literal>updating</literal> |
707
<literal>http_500</literal> |
708
<literal>http_503</literal> |
709
<literal>http_403</literal> |
710
<literal>http_404</literal> |
711
<literal>http_429</literal> |
712
<literal>off</literal>
713
...</syntax>
714
<default>off</default>
715
<context>http</context>
716
<context>server</context>
717
<context>location</context>
718
719
<para>
720
Определяет, в каких случаях можно использовать устаревший закэшированный ответ.
721
Параметры директивы совпадают с параметрами
722
директивы <link id="fastcgi_next_upstream"/>.
723
</para>
724
725
<para>
726
Параметр <literal>error</literal> также позволяет использовать
727
устаревший закэшированный ответ при невозможности выбора
728
FastCGI-сервера для обработки запроса.
729
</para>
730
731
<para id="fastcgi_cache_use_stale_updating">
732
Кроме того, дополнительный параметр <literal>updating</literal>
733
разрешает использовать устаревший закэшированный ответ,
734
если на данный момент он уже обновляется.
735
Это позволяет минимизировать число обращений к FastCGI-серверам
736
при обновлении закэшированных данных.
737
</para>
738
739
<para>
740
Использование устаревшего закэшированного ответа
741
может также быть разрешено непосредственно в заголовке ответа
742
на определённое количество секунд после того, как ответ устарел (1.11.10).
743
Такой способ менее приоритетен, чем задание параметров директивы.
744
<list type="bullet" compact="no">
745
746
<listitem>
747
Расширение
748
<link url="https://datatracker.ietf.org/doc/html/rfc5861#section-3">stale-while-revalidate</link>
749
поля заголовка <header>Cache-Control</header> разрешает
750
использовать устаревший закэшированный ответ,
751
если на данный момент он уже обновляется.
752
</listitem>
753
754
<listitem>
755
Расширение
756
<link url="https://datatracker.ietf.org/doc/html/rfc5861#section-4">stale-if-error</link>
757
поля заголовка <header>Cache-Control</header> разрешает
758
использовать устаревший закэшированный ответ в случае ошибки.
759
</listitem>
760
761
</list>
762
</para>
763
764
<para>
765
Чтобы минимизировать число обращений к FastCGI-серверам при
766
заполнении нового элемента кэша, можно воспользоваться директивой
767
<link id="fastcgi_cache_lock"/>.
768
</para>
769
770
</directive>
771
772
773
<directive name="fastcgi_cache_valid">
774
<syntax>[<value>код</value> ...] <value>время</value></syntax>
775
<default/>
776
<context>http</context>
777
<context>server</context>
778
<context>location</context>
779
780
<para>
781
Задаёт время кэширования для разных кодов ответа.
782
Например, директивы
783
<example>
784
fastcgi_cache_valid 200 302 10m;
785
fastcgi_cache_valid 404 1m;
786
</example>
787
задают время кэширования 10 минут для ответов с кодами 200 и 302
788
и 1 минуту для ответов с кодом 404.
789
</para>
790
791
<para>
792
Если указано только <value>время</value> кэширования,
793
<example>
794
fastcgi_cache_valid 5m;
795
</example>
796
то кэшируются только ответы 200, 301 и 302.
797
</para>
798
799
<para>
800
Кроме того, можно кэшировать любые ответы с помощью параметра
801
<literal>any</literal>:
802
<example>
803
fastcgi_cache_valid 200 302 10m;
804
fastcgi_cache_valid 301 1h;
805
fastcgi_cache_valid any 1m;
806
</example>
807
</para>
808
809
<para>
810
Параметры кэширования могут также быть заданы непосредственно
811
в заголовке ответа.
812
Такой способ приоритетнее, чем задание времени кэширования с помощью директивы.
813
<list type="bullet" compact="no">
814
815
<listitem>
816
Поле заголовка <header>X-Accel-Expires</header> задаёт время кэширования
817
ответа в секундах.
818
Значение 0 запрещает кэшировать ответ.
819
Если значение начинается с префикса <literal>@</literal>, оно задаёт абсолютное
820
время в секундах с начала эпохи, до которого ответ может быть закэширован.
821
</listitem>
822
823
<listitem>
824
Если в заголовке нет поля <header>X-Accel-Expires</header>,
825
параметры кэширования определяются по полям заголовка
826
<header>Expires</header> или <header>Cache-Control</header>.
827
</listitem>
828
829
<listitem>
830
Ответ, в заголовке которого есть поле <header>Set-Cookie</header>,
831
не будет кэшироваться.
832
</listitem>
833
834
<listitem>
835
Ответ, в заголовке которого есть поле <header>Vary</header>
836
со специальным значением “<literal>*</literal>”,
837
не будет кэшироваться (1.7.7).
838
Ответ, в заголовке которого есть поле <header>Vary</header>
839
с другим значением, будет закэширован
840
с учётом соответствующих полей заголовка запроса (1.7.7).
841
</listitem>
842
843
</list>
844
Обработка одного или более из этих полей заголовка может быть отключена
845
при помощи директивы <link id="fastcgi_ignore_headers"/>.
846
</para>
847
848
</directive>
849
850
851
<directive name="fastcgi_catch_stderr">
852
<syntax><value>строка</value></syntax>
853
<default/>
854
<context>http</context>
855
<context>server</context>
856
<context>location</context>
857
858
<para>
859
Задаёт строку для поиска в потоке ошибок ответа,
860
полученного от FastCGI-сервера.
861
Если <value>строка</value> найдена, то считается, что FastCGI-сервер
862
вернул <link id="fastcgi_next_upstream">неверный ответ</link>.
863
Это позволяет обрабатывать ошибки приложений в nginx, например:
864
<example>
865
location /php/ {
866
fastcgi_pass backend:9000;
867
...
868
fastcgi_catch_stderr "PHP Fatal error";
869
fastcgi_next_upstream error timeout invalid_header;
870
}
871
</example>
872
</para>
873
874
</directive>
875
876
877
<directive name="fastcgi_connect_timeout">
878
<syntax><value>время</value></syntax>
879
<default>60s</default>
880
<context>http</context>
881
<context>server</context>
882
<context>location</context>
883
884
<para>
885
Задаёт таймаут для установления соединения с FastCGI-сервером.
886
Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд.
887
</para>
888
889
</directive>
890
891
892
<directive name="fastcgi_force_ranges">
893
<syntax><literal>on</literal> | <literal>off</literal></syntax>
894
<default>off</default>
895
<context>http</context>
896
<context>server</context>
897
<context>location</context>
898
<appeared-in>1.7.7</appeared-in>
899
900
<para>
901
Включает поддержку диапазонов запрашиваемых байт (byte-range)
902
для кэшированных и некэшированных ответов FastCGI-сервера
903
вне зависимости от наличия поля <header>Accept-Ranges</header>
904
в заголовках этих ответов.
905
</para>
906
907
</directive>
908
909
910
<directive name="fastcgi_hide_header">
911
<syntax><value>поле</value></syntax>
912
<default/>
913
<context>http</context>
914
<context>server</context>
915
<context>location</context>
916
917
<para>
918
По умолчанию
919
nginx не передаёт клиенту поля заголовка <header>Status</header> и
920
<header>X-Accel-...</header> из ответа FastCGI-сервера.
921
Директива <literal>fastcgi_hide_header</literal> задаёт дополнительные поля,
922
которые не будут передаваться.
923
Если же передачу полей нужно разрешить, можно воспользоваться
924
директивой <link id="fastcgi_pass_header"/>.
925
</para>
926
927
</directive>
928
929
930
<directive name="fastcgi_ignore_client_abort">
931
<syntax><literal>on</literal> | <literal>off</literal></syntax>
932
<default>off</default>
933
<context>http</context>
934
<context>server</context>
935
<context>location</context>
936
937
<para>
938
Определяет, закрывать ли соединение с FastCGI-сервером
939
в случае, если клиент закрыл соединение, не дождавшись ответа.
940
</para>
941
942
</directive>
943
944
945
<directive name="fastcgi_ignore_headers">
946
<syntax><value>поле</value> ...</syntax>
947
<default/>
948
<context>http</context>
949
<context>server</context>
950
<context>location</context>
951
952
<para>
953
Запрещает обработку некоторых полей заголовка из ответа FastCGI-сервера.
954
В директиве можно указать поля <header>X-Accel-Redirect</header>,
955
<header>X-Accel-Expires</header>, <header>X-Accel-Limit-Rate</header> (1.1.6),
956
<header>X-Accel-Buffering</header> (1.1.6),
957
<header>X-Accel-Charset</header> (1.1.6), <header>Expires</header>,
958
<header>Cache-Control</header>, <header>Set-Cookie</header> (0.8.44)
959
и <header>Vary</header> (1.7.7).
960
</para>
961
962
<para>
963
Если не запрещено, обработка этих полей заголовка заключается в следующем:
964
<list type="bullet" compact="no">
965
966
<listitem>
967
<header>X-Accel-Expires</header>, <header>Expires</header>,
968
<header>Cache-Control</header>, <header>Set-Cookie</header>
969
и <header>Vary</header>
970
задают параметры <link id="fastcgi_cache_valid">кэширования</link> ответа;
971
</listitem>
972
973
<listitem>
974
<header>X-Accel-Redirect</header> производит
975
<link doc="ngx_http_core_module.xml" id="internal">внутреннее
976
перенаправление</link> на указанный URI;
977
</listitem>
978
979
<listitem>
980
<header>X-Accel-Limit-Rate</header> задаёт
981
<link doc="ngx_http_core_module.xml" id="limit_rate">ограничение
982
скорости</link> передачи ответа клиенту;
983
</listitem>
984
985
<listitem>
986
<header>X-Accel-Buffering</header> включает или выключает
987
<link id="fastcgi_buffering">буферизацию</link> ответа;
988
</listitem>
989
990
<listitem>
991
<header>X-Accel-Charset</header> задаёт желаемую
992
<link doc="ngx_http_charset_module.xml" id="charset">кодировку</link>
993
ответа.
994
</listitem>
995
996
</list>
997
</para>
998
999
</directive>
1000
1001
1002
<directive name="fastcgi_index">
1003
<syntax><value>имя</value></syntax>
1004
<default/>
1005
<context>http</context>
1006
<context>server</context>
1007
<context>location</context>
1008
1009
<para>
1010
Задаёт имя файла, который при создании переменной
1011
<var>$fastcgi_script_name</var> будет добавляться после URI,
1012
если URI заканчивается слэшом.
1013
Например, при таких настройках
1014
<example>
1015
fastcgi_index index.php;
1016
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
1017
</example>
1018
и запросе “<literal>/page.php</literal>
1019
параметр <literal>SCRIPT_FILENAME</literal> будет равен
1020
<literal>/home/www/scripts/php/page.php</literal>”,
1021
а при запросе “<literal>/</literal>&mdash;
1022
<literal>/home/www/scripts/php/index.php</literal>”.
1023
</para>
1024
1025
</directive>
1026
1027
1028
<directive name="fastcgi_intercept_errors">
1029
<syntax><literal>on</literal> | <literal>off</literal></syntax>
1030
<default>off</default>
1031
<context>http</context>
1032
<context>server</context>
1033
<context>location</context>
1034
1035
<para>
1036
Определяет, передавать ли клиенту ответы FastCGI-сервера с кодом
1037
больше либо равным 300,
1038
или же перехватывать их и перенаправлять на обработку nginx’у с помощью
1039
директивы <link doc="ngx_http_core_module.xml" id="error_page"/>.
1040
</para>
1041
1042
</directive>
1043
1044
1045
<directive name="fastcgi_keep_conn">
1046
<syntax><literal>on</literal> | <literal>off</literal></syntax>
1047
<default>off</default>
1048
<context>http</context>
1049
<context>server</context>
1050
<context>location</context>
1051
<appeared-in>1.1.4</appeared-in>
1052
1053
<para>
1054
По умолчанию FastCGI-сервер будет закрывать соединение сразу же
1055
после отправки ответа.
1056
При установке значения <literal>on</literal> nginx указывает
1057
FastCGI-серверу оставлять соединения открытыми.
1058
Это в частности требуется для функционирования
1059
<link doc="ngx_http_upstream_module.xml" id="keepalive">постоянных
1060
соединений</link> с FastCGI-серверами.
1061
</para>
1062
1063
</directive>
1064
1065
1066
<directive name="fastcgi_limit_rate">
1067
<syntax><value>скорость</value></syntax>
1068
<default>0</default>
1069
<context>http</context>
1070
<context>server</context>
1071
<context>location</context>
1072
<appeared-in>1.7.7</appeared-in>
1073
1074
<para>
1075
Ограничивает скорость чтения ответа от FastCGI-сервера.
1076
<value>Скорость</value> задаётся в байтах в секунду.
1077
Значение 0 отключает ограничение скорости.
1078
Ограничение устанавливается на запрос,
1079
поэтому, если nginx одновременно
1080
откроет два соединения к FastCGI-серверу,
1081
суммарная скорость будет вдвое выше заданного ограничения.
1082
Ограничение работает только в случае, если включена
1083
<link id="fastcgi_buffering">буферизация</link> ответов FastCGI-сервера.
1084
В значении параметра можно использовать переменные (1.27.0).
1085
</para>
1086
1087
</directive>
1088
1089
1090
<directive name="fastcgi_max_temp_file_size">
1091
<syntax><value>размер</value></syntax>
1092
<default>1024m</default>
1093
<context>http</context>
1094
<context>server</context>
1095
<context>location</context>
1096
1097
<para>
1098
Если включена <link id="fastcgi_buffering">буферизация</link> ответов
1099
FastCGI-сервера, и ответ не вмещается целиком в буферы,
1100
заданные директивами <link id="fastcgi_buffer_size"/> и
1101
<link id="fastcgi_buffers"/>, часть ответа может быть записана во временный файл.
1102
Эта директива задаёт максимальный <value>размер</value> временного файла.
1103
Размер данных, сбрасываемых во временный файл за один раз, задаётся
1104
директивой <link id="fastcgi_temp_file_write_size"/>.
1105
</para>
1106
1107
<para>
1108
Значение 0 отключает возможность буферизации ответов во временные файлы.
1109
</para>
1110
1111
<para>
1112
<note>
1113
Данное ограничение не распространяется на ответы,
1114
которые будут <link id="fastcgi_cache">закэшированы</link>
1115
или <link id="fastcgi_store">сохранены</link> на диске.
1116
</note>
1117
</para>
1118
1119
</directive>
1120
1121
1122
<directive name="fastcgi_next_upstream">
1123
<syntax>
1124
<literal>error</literal> |
1125
<literal>timeout</literal> |
1126
<literal>denied</literal> |
1127
<literal>invalid_header</literal> |
1128
<literal>http_500</literal> |
1129
<literal>http_503</literal> |
1130
<literal>http_403</literal> |
1131
<literal>http_404</literal> |
1132
<literal>http_429</literal> |
1133
<literal>non_idempotent</literal> |
1134
<literal>off</literal>
1135
...</syntax>
1136
<default>error timeout</default>
1137
<context>http</context>
1138
<context>server</context>
1139
<context>location</context>
1140
1141
<para>
1142
Определяет, в каких случаях запрос будет передан следующему серверу:
1143
<list type="tag">
1144
1145
<tag-name><literal>error</literal></tag-name>
1146
<tag-desc>произошла ошибка соединения с сервером, передачи ему запроса или
1147
чтения заголовка ответа сервера;</tag-desc>
1148
1149
<tag-name><literal>timeout</literal></tag-name>
1150
<tag-desc>произошёл таймаут во время соединения с сервером,
1151
передачи ему запроса или чтения заголовка ответа сервера;</tag-desc>
1152
1153
<tag-name id="denied"><literal>denied</literal></tag-name>
1154
<tag-desc>сервер <link id="proxy_allow_upstream">отклонил</link>
1155
соединение (1.29.3);
1156
<para>
1157
<note>
1158
Параметр доступен как часть
1159
<commercial_version>коммерческой подписки</commercial_version>.
1160
</note>
1161
</para>
1162
</tag-desc>
1163
1164
<tag-name id="invalid_header"><literal>invalid_header</literal></tag-name>
1165
<tag-desc>сервер вернул пустой или неверный ответ;</tag-desc>
1166
1167
<tag-name><literal>http_500</literal></tag-name>
1168
<tag-desc>сервер вернул ответ с кодом 500;</tag-desc>
1169
1170
<tag-name><literal>http_503</literal></tag-name>
1171
<tag-desc>сервер вернул ответ с кодом 503;</tag-desc>
1172
1173
<tag-name><literal>http_403</literal></tag-name>
1174
<tag-desc>сервер вернул ответ с кодом 403;</tag-desc>
1175
1176
<tag-name><literal>http_404</literal></tag-name>
1177
<tag-desc>сервер вернул ответ с кодом 404;</tag-desc>
1178
1179
<tag-name><literal>http_429</literal></tag-name>
1180
<tag-desc>сервер вернул ответ с кодом 429 (1.11.13);</tag-desc>
1181
1182
<tag-name id="non_idempotent"><literal>non_idempotent</literal></tag-name>
1183
<tag-desc>обычно запросы с
1184
<link url="https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2">неидемпотентным</link>
1185
методом
1186
(<literal>POST</literal>, <literal>LOCK</literal>, <literal>PATCH</literal>)
1187
не передаются на другой сервер,
1188
если запрос серверу группы уже был отправлен (1.9.13);
1189
включение параметра явно разрешает повторять подобные запросы;
1190
</tag-desc>
1191
1192
1193
<tag-name><literal>off</literal></tag-name>
1194
<tag-desc>запрещает передачу запроса следующему серверу.</tag-desc>
1195
1196
</list>
1197
</para>
1198
1199
<para>
1200
Необходимо понимать, что передача запроса следующему серверу возможна
1201
только при условии, что клиенту ещё ничего не передавалось.
1202
То есть, если ошибка или таймаут возникли в середине передачи ответа,
1203
то исправить это уже невозможно.
1204
</para>
1205
1206
<para>
1207
Директива также определяет, что считается
1208
<link doc="ngx_http_upstream_module.xml" id="max_fails">неудачной
1209
попыткой</link> работы с сервером.
1210
Случаи <literal>error</literal>, <literal>timeout</literal>,
1211
<literal>denied</literal> и
1212
<literal>invalid_header</literal>
1213
всегда считаются неудачными попытками, даже если они не указаны в директиве.
1214
Случаи <literal>http_500</literal>, <literal>http_503</literal>
1215
и <literal>http_429</literal>
1216
считаются неудачными попытками, только если они указаны в директиве.
1217
Случаи <literal>http_403</literal> и <literal>http_404</literal>
1218
никогда не считаются неудачными попытками.
1219
</para>
1220
1221
<para>
1222
Передача запроса следующему серверу может быть ограничена по
1223
<link id="fastcgi_next_upstream_tries">количеству попыток</link>
1224
и по <link id="fastcgi_next_upstream_timeout">времени</link>.
1225
</para>
1226
1227
</directive>
1228
1229
1230
<directive name="fastcgi_next_upstream_timeout">
1231
<syntax><value>время</value></syntax>
1232
<default>0</default>
1233
<context>http</context>
1234
<context>server</context>
1235
<context>location</context>
1236
<appeared-in>1.7.5</appeared-in>
1237
1238
<para>
1239
Ограничивает время, в течение которого возможна передача запроса
1240
<link id="fastcgi_next_upstream">следующему серверу</link>.
1241
Значение <literal>0</literal> отключает это ограничение.
1242
</para>
1243
1244
</directive>
1245
1246
1247
<directive name="fastcgi_next_upstream_tries">
1248
<syntax><value>число</value></syntax>
1249
<default>0</default>
1250
<context>http</context>
1251
<context>server</context>
1252
<context>location</context>
1253
<appeared-in>1.7.5</appeared-in>
1254
1255
<para>
1256
Ограничивает число допустимых попыток для передачи запроса
1257
<link id="fastcgi_next_upstream">следующему серверу</link>.
1258
Значение <literal>0</literal> отключает это ограничение.
1259
</para>
1260
1261
</directive>
1262
1263
1264
<directive name="fastcgi_no_cache">
1265
<syntax><value>строка</value> ...</syntax>
1266
<default/>
1267
<context>http</context>
1268
<context>server</context>
1269
<context>location</context>
1270
1271
<para>
1272
Задаёт условия, при которых ответ не будет сохраняться в кэш.
1273
Если значение хотя бы одного из строковых параметров непустое и не равно “0”,
1274
то ответ не будет сохранён:
1275
<example>
1276
fastcgi_no_cache $cookie_nocache $arg_nocache$arg_comment;
1277
fastcgi_no_cache $http_pragma $http_authorization;
1278
</example>
1279
Можно использовать совместно с директивой <link id="fastcgi_cache_bypass"/>.
1280
</para>
1281
1282
</directive>
1283
1284
1285
<directive name="fastcgi_param">
1286
<syntax>
1287
<value>параметр</value> <value>значение</value>
1288
[<literal>if_not_empty</literal>]</syntax>
1289
<default>HTTP_HOST $host$is_request_port$request_port</default>
1290
<context>http</context>
1291
<context>server</context>
1292
<context>location</context>
1293
1294
<para>
1295
Задаёт <value>параметр</value>, который будет передаваться FastCGI-серверу.
1296
В качестве значения можно использовать текст, переменные и их комбинации.
1297
Директивы наследуются с предыдущего уровня конфигурации при условии, что
1298
на данном уровне не описаны свои директивы <literal>fastcgi_param</literal>.
1299
</para>
1300
1301
<para>
1302
Ниже приведён пример минимально необходимых параметров для PHP:
1303
<example>
1304
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
1305
fastcgi_param QUERY_STRING $query_string;
1306
</example>
1307
</para>
1308
1309
<para>
1310
Параметр <literal>SCRIPT_FILENAME</literal> используется в PHP для
1311
определения имени скрипта, а в параметре <literal>QUERY_STRING</literal>
1312
передаются параметры запроса.
1313
</para>
1314
1315
<para>
1316
Если скрипты обрабатывают запросы <literal>POST</literal>, то нужны
1317
ещё три параметра:
1318
<example>
1319
fastcgi_param REQUEST_METHOD $request_method;
1320
fastcgi_param CONTENT_TYPE $content_type;
1321
fastcgi_param CONTENT_LENGTH $content_length;
1322
</example>
1323
</para>
1324
1325
<para>
1326
Если PHP был собран с параметром конфигурации
1327
<literal>--enable-force-cgi-redirect</literal>, то нужно передавать
1328
параметр <literal>REDIRECT_STATUS</literal> со значением “200”:
1329
<example>
1330
fastcgi_param REDIRECT_STATUS 200;
1331
</example>
1332
</para>
1333
1334
<para>
1335
Если директива указана с <literal>if_not_empty</literal> (1.1.11),
1336
то такой параметр с пустым значением передаваться на сервер не будет:
1337
<example>
1338
fastcgi_param HTTPS $https if_not_empty;
1339
</example>
1340
</para>
1341
1342
</directive>
1343
1344
1345
<directive name="fastcgi_pass">
1346
<syntax><value>адрес</value></syntax>
1347
<default/>
1348
<context>location</context>
1349
<context>if в location</context>
1350
1351
<para>
1352
Задаёт адрес FastCGI-сервера.
1353
Адрес может быть указан в виде доменного имени или IP-адреса,
1354
и порта:
1355
<example>
1356
fastcgi_pass localhost:9000;
1357
</example>
1358
или в виде пути UNIX-сокета:
1359
<example>
1360
fastcgi_pass unix:/tmp/fastcgi.socket;
1361
</example>
1362
</para>
1363
1364
<para>
1365
Если доменному имени соответствует несколько адресов, то все они будут
1366
использоваться по очереди (round-robin).
1367
И, кроме того, адрес может быть
1368
<link doc="ngx_http_upstream_module.xml">группой серверов</link>.
1369
</para>
1370
1371
<para>
1372
В значении параметра можно использовать переменные.
1373
В этом случае, если адрес указан в виде доменного имени,
1374
имя ищется среди описанных
1375
<link doc="ngx_http_upstream_module.xml">групп серверов</link>
1376
и если не найдено, то определяется с помощью
1377
<link doc="ngx_http_core_module.xml" id="resolver"/>’а.
1378
</para>
1379
1380
</directive>
1381
1382
1383
<directive name="fastcgi_pass_header">
1384
<syntax><value>поле</value></syntax>
1385
<default/>
1386
<context>http</context>
1387
<context>server</context>
1388
<context>location</context>
1389
1390
<para>
1391
Разрешает передавать от FastCGI-сервера клиенту
1392
<link id="fastcgi_hide_header">запрещённые для передачи</link> поля заголовка.
1393
</para>
1394
1395
</directive>
1396
1397
1398
<directive name="fastcgi_pass_request_body">
1399
<syntax><literal>on</literal> | <literal>off</literal></syntax>
1400
<default>on</default>
1401
<context>http</context>
1402
<context>server</context>
1403
<context>location</context>
1404
1405
<para>
1406
Позволяет запретить передачу исходного тела запроса
1407
на FastCGI-сервер.
1408
См. также директиву <link id="fastcgi_pass_request_headers"/>.
1409
</para>
1410
1411
</directive>
1412
1413
1414
<directive name="fastcgi_pass_request_headers">
1415
<syntax><literal>on</literal> | <literal>off</literal></syntax>
1416
<default>on</default>
1417
<context>http</context>
1418
<context>server</context>
1419
<context>location</context>
1420
1421
<para>
1422
Позволяет запретить передачу полей заголовка исходного запроса на
1423
FastCGI-сервер.
1424
См. также директивы <link id="fastcgi_pass_request_body"/>.
1425
</para>
1426
1427
</directive>
1428
1429
1430
<directive name="fastcgi_read_timeout">
1431
<syntax><value>время</value></syntax>
1432
<default>60s</default>
1433
<context>http</context>
1434
<context>server</context>
1435
<context>location</context>
1436
1437
<para>
1438
Задаёт таймаут при чтении ответа FastCGI-сервера.
1439
Таймаут устанавливается не на всю передачу ответа,
1440
а только между двумя операциями чтения.
1441
Если по истечении этого времени FastCGI-сервер ничего не передаст,
1442
соединение закрывается.
1443
</para>
1444
1445
</directive>
1446
1447
1448
<directive name="fastcgi_request_buffering">
1449
<syntax><literal>on</literal> | <literal>off</literal></syntax>
1450
<default>on</default>
1451
<context>http</context>
1452
<context>server</context>
1453
<context>location</context>
1454
<appeared-in>1.7.11</appeared-in>
1455
1456
<para>
1457
Разрешает или запрещает использовать буферизацию тела запроса клиента.
1458
</para>
1459
1460
<para>
1461
Если буферизация включена, то тело запроса полностью
1462
<link doc="ngx_http_core_module.xml" id="client_body_buffer_size">читается</link>
1463
от клиента перед отправкой запроса на FastCGI-сервер.
1464
</para>
1465
1466
<para>
1467
Если буферизация выключена, то тело запроса отправляется
1468
на FastCGI-сервер сразу же по мере его поступления.
1469
В этом случае запрос не может быть передан
1470
<link id="fastcgi_next_upstream">следующему серверу</link>,
1471
если nginx уже начал отправку тела запроса.
1472
</para>
1473
1474
</directive>
1475
1476
1477
<directive name="fastcgi_request_dynamic">
1478
<syntax><literal>on</literal> | <literal>off</literal></syntax>
1479
<default>off</default>
1480
<context>http</context>
1481
<context>server</context>
1482
<context>location</context>
1483
<appeared-in>1.29.3</appeared-in>
1484
1485
<para>
1486
Разрешает или запрещает создание отдельного экземпляра запроса
1487
для каждого FastCGI-сервера.
1488
По умолчанию для всех FastCGI-серверов используется единый запрос.
1489
Если разрешено, то для каждого сервера создаётся отдельный экземпляр запроса,
1490
что позволяет кастомизировать запрос для конкретного сервера.
1491
</para>
1492
1493
<para>
1494
<note>
1495
Директива доступна как часть
1496
<commercial_version>коммерческой подписки</commercial_version>.
1497
</note>
1498
</para>
1499
1500
</directive>
1501
1502
1503
<directive name="fastcgi_send_lowat">
1504
<syntax><value>размер</value></syntax>
1505
<default>0</default>
1506
<context>http</context>
1507
<context>server</context>
1508
<context>location</context>
1509
1510
<para>
1511
При установке директивы в ненулевое значение nginx будет пытаться минимизировать
1512
число операций отправки на исходящих соединениях с FastCGI-сервером
1513
либо при помощи флага <c-def>NOTE_LOWAT</c-def> метода
1514
<link doc="../events.xml" id="kqueue"/>,
1515
либо при помощи параметра сокета <c-def>SO_SNDLOWAT</c-def>,
1516
с указанным <value>размером</value>.
1517
</para>
1518
1519
<para>
1520
Эта директива игнорируется на Linux, Solaris и Windows.
1521
</para>
1522
1523
</directive>
1524
1525
1526
<directive name="fastcgi_send_timeout">
1527
<syntax><value>время</value></syntax>
1528
<default>60s</default>
1529
<context>http</context>
1530
<context>server</context>
1531
<context>location</context>
1532
1533
<para>
1534
Задаёт таймаут при передаче запроса FastCGI-серверу.
1535
Таймаут устанавливается не на всю передачу запроса,
1536
а только между двумя операциями записи.
1537
Если по истечении этого времени FastCGI-сервер не примет новых данных,
1538
соединение закрывается.
1539
</para>
1540
1541
</directive>
1542
1543
1544
<directive name="fastcgi_socket_keepalive">
1545
<syntax><literal>on</literal> | <literal>off</literal></syntax>
1546
<default>off</default>
1547
<context>http</context>
1548
<context>server</context>
1549
<context>location</context>
1550
<appeared-in>1.15.6</appeared-in>
1551
1552
<para>
1553
Конфигурирует поведение “TCP keepalive”
1554
для исходящих соединений к FastCGI-серверу.
1555
По умолчанию для сокета действуют настройки операционной системы.
1556
Если указано значение “<literal>on</literal>”, то
1557
для сокета включается параметр <c-def>SO_KEEPALIVE</c-def>.
1558
</para>
1559
1560
</directive>
1561
1562
1563
<directive name="fastcgi_split_path_info">
1564
<syntax><value>regex</value></syntax>
1565
<default/>
1566
<context>location</context>
1567
1568
<para>
1569
Задаёт регулярное выражение, выделяющее значение для переменной
1570
<var>$fastcgi_path_info</var>.
1571
Регулярное выражение должно иметь два выделения, из которых первое
1572
становится значением переменной <var>$fastcgi_script_name</var>,
1573
а второе&mdash;значением переменной <var>$fastcgi_path_info</var>.
1574
Например, при таких настройках
1575
<example>
1576
location ~ ^(.+\.php)(.*)$ {
1577
fastcgi_split_path_info ^(.+\.php)(.*)$;
1578
fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
1579
fastcgi_param PATH_INFO $fastcgi_path_info;
1580
</example>
1581
и запросе “<literal>/show.php/article/0001</literal>
1582
параметр <literal>SCRIPT_FILENAME</literal> будет равен
1583
<literal>/path/to/php/show.php</literal>”, а параметр
1584
<literal>PATH_INFO</literal>&mdash;<literal>/article/0001</literal>”.
1585
</para>
1586
1587
</directive>
1588
1589
1590
<directive name="fastcgi_store">
1591
<syntax>
1592
<literal>on</literal> |
1593
<literal>off</literal> |
1594
<value>строка</value></syntax>
1595
<default>off</default>
1596
<context>http</context>
1597
<context>server</context>
1598
<context>location</context>
1599
1600
<para>
1601
Разрешает сохранение на диск файлов.
1602
Параметр <literal>on</literal> сохраняет файлы в соответствии с путями,
1603
указанными в директивах
1604
<link doc="ngx_http_core_module.xml" id="alias"/> или
1605
<link doc="ngx_http_core_module.xml" id="root"/>.
1606
Параметр <literal>off</literal> запрещает сохранение файлов.
1607
Кроме того, имя файла можно задать явно с помощью строки с переменными:
1608
<example>
1609
fastcgi_store /data/www$original_uri;
1610
</example>
1611
</para>
1612
1613
<para>
1614
Время изменения файлов выставляется согласно полученному полю
1615
<header>Last-Modified</header> в заголовке ответа.
1616
Ответ сначала записывается во временный файл, а потом этот файл
1617
переименовывается.
1618
Начиная с версии 0.8.9 временный файл и постоянное место хранения ответа
1619
могут располагаться на разных файловых системах.
1620
Однако нужно учитывать,
1621
что в этом случае вместо дешёвой операции переименовывания в пределах
1622
одной файловой системы файл копируется с одной файловой системы на другую.
1623
Поэтому лучше, если сохраняемые файлы будут находиться на той же файловой
1624
системе, что и каталог с временными файлами, задаваемый директивой
1625
<link id="fastcgi_temp_path"/> для данного location.
1626
</para>
1627
1628
<para>
1629
Директиву можно использовать для создания локальных копий статических
1630
неизменяемых файлов, например, так:
1631
<example>
1632
location /images/ {
1633
root /data/www;
1634
error_page 404 = /fetch$uri;
1635
}
1636
1637
location /fetch/ {
1638
internal;
1639
1640
fastcgi_pass backend:9000;
1641
...
1642
1643
fastcgi_store on;
1644
fastcgi_store_access user:rw group:rw all:r;
1645
fastcgi_temp_path /data/temp;
1646
1647
alias /data/www/;
1648
}
1649
</example>
1650
</para>
1651
1652
</directive>
1653
1654
1655
<directive name="fastcgi_store_access">
1656
<syntax><value>пользователи</value>:<value>права</value> ...</syntax>
1657
<default>user:rw</default>
1658
<context>http</context>
1659
<context>server</context>
1660
<context>location</context>
1661
1662
<para>
1663
Задаёт права доступа для создаваемых файлов и каталогов, например,
1664
<example>
1665
fastcgi_store_access user:rw group:rw all:r;
1666
</example>
1667
</para>
1668
1669
<para>
1670
Если заданы какие-либо права для <literal>group</literal> или
1671
<literal>all</literal>, то права для <literal>user</literal>
1672
указывать необязательно:
1673
<example>
1674
fastcgi_store_access group:rw all:r;
1675
</example>
1676
</para>
1677
1678
</directive>
1679
1680
1681
<directive name="fastcgi_temp_file_write_size">
1682
<syntax><value>размер</value></syntax>
1683
<default>8k|16k</default>
1684
<context>http</context>
1685
<context>server</context>
1686
<context>location</context>
1687
1688
<para>
1689
Ограничивает <value>размер</value> данных, сбрасываемых во временный файл
1690
за один раз, при включённой буферизации ответов FastCGI-сервера
1691
во временные файлы.
1692
По умолчанию <value>размер</value> ограничен двумя буферами, заданными
1693
директивами <link id="fastcgi_buffer_size"/> и <link id="fastcgi_buffers"/>.
1694
Максимальный размер временного файла задаётся директивой
1695
<link id="fastcgi_max_temp_file_size"/>.
1696
</para>
1697
1698
</directive>
1699
1700
1701
<directive name="fastcgi_temp_path">
1702
<syntax>
1703
<value>путь</value>
1704
[<value>уровень1</value>
1705
[<value>уровень2</value>
1706
[<value>уровень3</value>]]]</syntax>
1707
<default>fastcgi_temp</default>
1708
<context>http</context>
1709
<context>server</context>
1710
<context>location</context>
1711
1712
<para>
1713
Задаёт имя каталога для хранения временных файлов с данными,
1714
полученными от FastCGI-серверов.
1715
В каталоге может использоваться иерархия подкаталогов до трёх уровней.
1716
Например, при такой конфигурации
1717
<example>
1718
fastcgi_temp_path /spool/nginx/fastcgi_temp 1 2;
1719
</example>
1720
временный файл будет следующего вида:
1721
<example>
1722
/spool/nginx/fastcgi_temp/<emphasis>7</emphasis>/<emphasis>45</emphasis>/00000123<emphasis>457</emphasis>
1723
</example>
1724
</para>
1725
1726
<para>
1727
См. также параметр <literal>use_temp_path</literal> директивы
1728
<link id="fastcgi_cache_path"/>.
1729
</para>
1730
1731
</directive>
1732
1733
</section>
1734
1735
1736
<section id="parameters" name="Параметры, передаваемые FastCGI-серверу">
1737
1738
<para>
1739
Поля заголовка HTTP-запроса передаются FastCGI-серверу в виде параметров.
1740
В приложениях и скриптах, запущенных в виде FastCGI-сервера,
1741
эти параметры обычно доступны в виде переменных среды.
1742
Например, поле заголовка <header>User-Agent</header> передаётся как параметр
1743
<literal>HTTP_USER_AGENT</literal>.
1744
Кроме полей заголовка HTTP-запроса можно передавать произвольные параметры
1745
с помощью директивы <link id="fastcgi_param"/>.
1746
</para>
1747
1748
</section>
1749
1750
1751
<section id="variables" name="Встроенные переменные">
1752
1753
<para>
1754
В модуле <literal>ngx_http_fastcgi_module</literal> есть встроенные переменные,
1755
которые можно использовать для формирования параметров с помощью директивы
1756
<link id="fastcgi_param"/>:
1757
<list type="tag">
1758
1759
<tag-name id="var_fastcgi_script_name"><var>$fastcgi_script_name</var>
1760
</tag-name>
1761
<tag-desc>
1762
URI запроса или же, если URI заканчивается слэшом,
1763
то URI запроса, дополненное именем индексного файла, задаваемого директивой
1764
<link id="fastcgi_index"/>.
1765
Эту переменную можно использовать для задания параметров
1766
<literal>SCRIPT_FILENAME</literal> и <literal>PATH_TRANSLATED</literal>,
1767
используемых, в частности, для определения имени скрипта в PHP.
1768
Например, для запроса “<literal>/info/</literal>” и при использовании
1769
директив
1770
<example>
1771
fastcgi_index index.php;
1772
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
1773
</example>
1774
параметр <literal>SCRIPT_FILENAME</literal> будет равен
1775
<literal>/home/www/scripts/php/info/index.php</literal>”.
1776
1777
<para>
1778
При использовании директивы <link id="fastcgi_split_path_info"/>
1779
переменная <var>$fastcgi_script_name</var> равна значению первого выделения,
1780
задаваемого этой директивой.
1781
</para>
1782
</tag-desc>
1783
1784
<tag-name id="var_fastcgi_path_info"><var>$fastcgi_path_info</var></tag-name>
1785
<tag-desc>значение второго выделения, задаваемого директивой
1786
<link id="fastcgi_split_path_info"/>.
1787
Эту переменную можно использовать для задания параметра
1788
<literal>PATH_INFO</literal>.
1789
</tag-desc>
1790
1791
</list>
1792
</para>
1793
1794
</section>
1795
1796
</module>
1797
1798