comparison xml/ru/docs/http/ngx_http_fastcgi_module.xml @ 295:38e111ec051d

Revision.
author Ruslan Ermilov <ru@nginx.com>
date Thu, 29 Dec 2011 07:34:07 +0000
parents 2305be197a84
children 2f318fe954ec
comparison
equal deleted inserted replaced
294:9f5ee1c6fca5 295:38e111ec051d
1 <?xml version="1.0"?> 1 <?xml version="1.0"?>
2 2
3 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd"> 3 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
4 4
5 <module name="Директивы модуля ngx_http_fastcgi_module" 5 <module name="Модуль ngx_http_fastcgi_module"
6 link="/ru/docs/http/ngx_http_fastcgi_module.html" 6 link="/ru/docs/http/ngx_http_fastcgi_module.html"
7 lang="ru"> 7 lang="ru">
8 8
9 <section id="summary"> 9 <section id="summary">
10 10
11 <para> 11 <para>
12 Модуль ngx_http_fastcgi_module позволяет передавать запросы 12 Модуль <literal>ngx_http_fastcgi_module</literal> позволяет передавать
13 удалённому FastCGI-серверу. 13 запросы FastCGI-серверу.
14 </para> 14 </para>
15 15
16 </section> 16 </section>
17 17
18 18
19 <section name="Пример конфигурации" id="example"> 19 <section id="example" name="Пример конфигурации">
20 20
21 <para> 21 <para>
22 <example> 22 <example>
23 location / { 23 location / {
24 fastcgi_pass localhost:9000; 24 fastcgi_pass localhost:9000;
25 fastcgi_index index.php; 25 fastcgi_index index.php;
26 26
27 fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name; 27 fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
28 fastcgi_param QUERY_STRING $query_string; 28 fastcgi_param QUERY_STRING $query_string;
29 fastcgi_param REQUEST_METHOD $request_method; 29 fastcgi_param REQUEST_METHOD $request_method;
30 fastcgi_param CONTENT_TYPE $content_type; 30 fastcgi_param CONTENT_TYPE $content_type;
31 fastcgi_param CONTENT_LENGTH $content_length; 31 fastcgi_param CONTENT_LENGTH $content_length;
32 } 32 }
33 </example> 33 </example>
34 </para> 34 </para>
35 35
36 </section> 36 </section>
37 37
38 38
39 <section name="Директивы" id="directives"> 39 <section id="directives" name="Директивы">
40 40
41 <directive name="fastcgi_buffer_size"> 41 <directive name="fastcgi_buffer_size">
42 <syntax><value>размер</value></syntax> 42 <syntax><value>размер</value></syntax>
43 <default>4k/8k</default> 43 <default>4k|8k</default>
44 <context>http, server, location</context> 44 <context>http</context>
45 45 <context>server</context>
46 <para> 46 <context>location</context>
47 Директива задаёт размер буфера, в который будет читаться 47
48 <para>
49 Задаёт <value>размер</value> буфера, в который будет читаться
48 первая часть ответа, получаемого от FastCGI-сервера. 50 первая часть ответа, получаемого от FastCGI-сервера.
49 В этой части ответа находится, как правило, небольшой заголовок ответа. 51 В этой части ответа находится, как правило, небольшой заголовок ответа.
50 По умолчанию размер буфера равен размеру одного буфера в директиве 52 По умолчанию размер буфера равен размеру одного буфера в директиве
51 <link id="fastcgi_buffers"/>, однако его можно сделать меньше. 53 <link id="fastcgi_buffers"/>, однако его можно сделать меньше.
52 </para> 54 </para>
54 </directive> 56 </directive>
55 57
56 58
57 <directive name="fastcgi_buffers"> 59 <directive name="fastcgi_buffers">
58 <syntax><value>число</value> <value>размер</value></syntax> 60 <syntax><value>число</value> <value>размер</value></syntax>
59 <default>8 4k/8k</default> 61 <default>8 4k|8k</default>
60 <context>http, server, location</context> 62 <context>http</context>
61 63 <context>server</context>
62 <para> 64 <context>location</context>
63 Директива задаёт число и размер буферов для одного соединения, 65
66 <para>
67 Задаёт <value>число</value> и <value>размер</value> буферов
68 для одного соединения,
64 в которые будет читаться ответ, получаемый от FastCGI-сервера. 69 в которые будет читаться ответ, получаемый от FastCGI-сервера.
65 По умолчанию размер одного буфера равен размеру страницы, в зависимости 70 По умолчанию размер одного буфера равен размеру страницы.
66 от платформы это или 4K, или 8K. 71 В зависимости от платформы это или 4K, или 8K.
67 </para> 72 </para>
68 73
69 </directive> 74 </directive>
70 75
71 76
72 <directive name="fastcgi_cache"> 77 <directive name="fastcgi_cache">
73 <syntax><value>зона</value> | <literal>off</literal></syntax> 78 <syntax><value>зона</value> | <literal>off</literal></syntax>
74 <default>off</default> 79 <default>off</default>
75 <context>http, server, location</context> 80 <context>http</context>
76 81 <context>server</context>
77 <para> 82 <context>location</context>
78 Директива задаёт зону для кэширования. 83
84 <para>
85 Задаёт зону для кэширования.
79 Одна и та же зона может использоваться в нескольких местах. 86 Одна и та же зона может использоваться в нескольких местах.
80 Параметр "off" запрещает кэширование, унаследованное с предыдущего 87 Параметр <literal>off</literal> запрещает кэширование, унаследованное
81 уровня конфигурации. 88 с предыдущего уровня конфигурации.
82 </para> 89 </para>
83 90
84 </directive> 91 </directive>
85 92
86 93
87 <directive name="fastcgi_cache_bypass"> 94 <directive name="fastcgi_cache_bypass">
88 <syntax><value>строка</value> ...</syntax> 95 <syntax><value>строка</value> ...</syntax>
89 <default/> 96 <default/>
90 <context>http, server, location</context> 97 <context>http</context>
91 98 <context>server</context>
92 <para> 99 <context>location</context>
93 Директива задаёт условия, при которых ответ не будет браться из кэша. 100
94 Если значение хотя бы одной из строк переменных не пустое и не равно "0", 101 <para>
102 Задаёт условия, при которых ответ не будет браться из кэша.
103 Если значение хотя бы одного из строковых параметров непустое и не равно “0”,
95 то ответ не берётся из кэша: 104 то ответ не берётся из кэша:
96 <example> 105 <example>
97 fastcgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment; 106 fastcgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
98 fastcgi_cache_bypass $http_pragma $http_authorization; 107 fastcgi_cache_bypass $http_pragma $http_authorization;
99 </example> 108 </example>
100 Можно использовать совместно с директивой <link id="fastcgi_no_cache"/>. 109 Можно использовать совместно с директивой <link id="fastcgi_no_cache"/>.
101 </para> 110 </para>
102 111
103 </directive> 112 </directive>
104 113
105 114
106 <directive name="fastcgi_cache_key"> 115 <directive name="fastcgi_cache_key">
107 <syntax><value>строка</value></syntax> 116 <syntax><value>строка</value></syntax>
108 <default/> 117 <default/>
109 <context>http, server, location</context> 118 <context>http</context>
110 119 <context>server</context>
111 <para> 120 <context>location</context>
112 Директива задаёт ключ для кэширования, например, 121
113 <example> 122 <para>
114 fastcgi_cache_key localhost:9000$request_uri; 123 Задаёт ключ для кэширования, например,
115 </example> 124 <example>
125 fastcgi_cache_key localhost:9000$request_uri;
126 </example>
127 </para>
128
129 </directive>
130
131
132 <directive name="fastcgi_cache_min_uses">
133 <syntax><value>число</value></syntax>
134 <default>1</default>
135 <context>http</context>
136 <context>server</context>
137 <context>location</context>
138
139 <para>
140 Задаёт <value>число</value> запросов, после которого ответ будет закэширован.
116 </para> 141 </para>
117 142
118 </directive> 143 </directive>
119 144
120 145
121 <directive name="fastcgi_cache_path"> 146 <directive name="fastcgi_cache_path">
122 <syntax> 147 <syntax>
123 <value>путь</value> 148 <value>путь</value>
124 [<literal>levels</literal>=<value>уровни</value>] 149 [<literal>levels</literal>=<value>уровни</value>]
125 <literal>keys_zone</literal>=<value>название</value>:<value>размер</value> 150 <literal>keys_zone</literal>=<value>имя</value>:<value>размер</value>
126 [<literal>inactive</literal>=<value>время</value>] 151 [<literal>inactive</literal>=<value>время</value>]
127 [<literal>max_size</literal>=<value>размер</value>]</syntax> 152 [<literal>max_size</literal>=<value>размер</value>]</syntax>
128 <default/> 153 <default/>
129 <context>http</context> 154 <context>http</context>
130 155
131 <para> 156 <para>
132 Директива задаёт путь и другие параметры кэша. Данные кэша хранятся в файлах. 157 Задаёт путь и другие параметры кэша.
133 Ключом и именем файла в кэше является результат функции md5 от 158 Данные кэша хранятся в файлах.
134 проксированного URL. Параметр levels задаёт уровни иерархии кэша, 159 Ключом и именем файла в кэше является результат функции MD5
160 от проксированного URL.
161 Параметр <literal>levels</literal> задаёт уровни иерархии кэша,
135 например, при использовании 162 например, при использовании
136 <example> 163 <example>
137 fastcgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m; 164 fastcgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
138 </example> 165 </example>
139 имена файлов в кэше будут такого вида: 166 имена файлов в кэше будут такого вида:
140 <example> 167 <example>
141 /data/nginx/cache/<emphasis>c/29</emphasis>/b7f54b2df7773722d382f4809d650<emphasis>29c</emphasis> 168 /data/nginx/cache/<emphasis>c</emphasis>/<emphasis>29</emphasis>/b7f54b2df7773722d382f4809d650<emphasis>29c</emphasis>
142 </example> 169 </example>
143 </para> 170 </para>
144 171
145 <para> 172 <para>
146 Кэшируемый ответ записывается во временный файл, а потом этот файл 173 Кэшируемый ответ сначала записывается во временный файл, а потом этот файл
147 переименовывается. Начиная с версии 0.8.9, временные файлы и кэш 174 переименовывается. Начиная с версии 0.8.9, временные файлы и кэш
148 могут располагаться на разных файловых системах, но нужно учитывать, 175 могут располагаться на разных файловых системах, но нужно учитывать,
149 что в этом случае вместо дешёвой операции переименовывания в пределах 176 что в этом случае вместо дешёвой операции переименовывания в пределах
150 одной файловой системы файл копируется с одной файловой системы на другую. 177 одной файловой системы файл копируется с одной файловой системы на другую.
151 Поэтому лучше, если кэш будет находиться на той же файловой 178 Поэтому лучше, если кэш будет находиться на той же файловой
153 <link id="fastcgi_temp_path"/> для данного location. 180 <link id="fastcgi_temp_path"/> для данного location.
154 </para> 181 </para>
155 182
156 <para> 183 <para>
157 Кроме того, все активные ключи и информация о данных хранятся в разделяемой 184 Кроме того, все активные ключи и информация о данных хранятся в разделяемой
158 памяти — зоне, имя и размер которой задаётся параметром keys_zone. 185 памяти — зоне, <value>имя</value> и <value>размер</value> которой
186 задаются параметром <literal>keys_zone</literal>.
159 Если к данным кэша не обращаются в течение времени, заданного параметром 187 Если к данным кэша не обращаются в течение времени, заданного параметром
160 inactive, то данные удаляются, независимо от их свежести. 188 <literal>inactive</literal>, то данные удаляются, независимо от их свежести.
161 По умолчанию inactive равен 10 минутам. 189 По умолчанию <literal>inactive</literal> равен 10 минутам.
162 </para> 190 </para>
163 191
164 <para> 192 <para>
165 Специальный процесс "cache manager" следит за максимальным размером кэша, 193 Специальный процесс “cache manager” следит за максимальным размером кэша,
166 заданным параметром max_size, и при превышении его размеров удаляет 194 заданным параметром <literal>max_size</literal>, и при превышении
167 самые невостребованные данные. 195 его размеров удаляет самые невостребованные данные.
168 </para>
169
170 </directive>
171
172
173 <directive name="fastcgi_cache_min_uses">
174 <syntax><value>число</value></syntax>
175 <default>1</default>
176 <context>http, server, location</context>
177
178 <para>
179 Директива задаёт число запросов, после которого ответ будет
180 закэширован.
181 </para>
182
183 </directive>
184
185
186 <directive name="fastcgi_cache_valid">
187 <syntax><value>ответ</value> ... <value>время</value>
188 </syntax>
189 <default/>
190 <context>http, server, location</context>
191
192 <para>
193 Директива задаёт время кэширования для разных ответов.
194 Например, директивы
195 <example>
196 fastcgi_cache_valid 200 302 10m;
197 fastcgi_cache_valid 404 1m;
198 </example>
199 задают время кэширования 10 минут для ответов 200 и 302,
200 и 1 минуту для ответов 404.
201 </para>
202
203 <para>
204 Если указано только время кэширования,
205 <example>
206 fastcgi_cache_valid 5m;
207 </example>
208 то кэшируются только ответы 200, 301 и 302.
209 </para>
210
211 <para>
212 Кроме того, может кэшировать любые ответы с помощью параметра "any":
213 <example>
214 fastcgi_cache_valid 200 302 10m;
215 fastcgi_cache_valid 301 1h;
216 fastcgi_cache_valid any 1m;
217 </example>
218 </para> 196 </para>
219 197
220 </directive> 198 </directive>
221 199
222 200
230 <literal>http_503</literal> | 208 <literal>http_503</literal> |
231 <literal>http_404</literal> | 209 <literal>http_404</literal> |
232 <literal>off</literal> 210 <literal>off</literal>
233 ...</syntax> 211 ...</syntax>
234 <default>off</default> 212 <default>off</default>
235 <context>http, server, location</context> 213 <context>http</context>
236 214 <context>server</context>
237 215 <context>location</context>
238 <para> 216
239 Директива определяет, в каких случаях можно использовать 217 <para>
240 устаревший закэшированный ответ, если при работе с проксированным 218 Определяет, в каких случаях можно использовать устаревший закэшированный ответ,
241 сервером возникла ошибка. Параметры директивы совпадают с параметрами 219 если при работе с FastCGI-сервером возникла ошибка.
220 Параметры директивы совпадают с параметрами
242 директивы <link id="fastcgi_next_upstream"/>. 221 директивы <link id="fastcgi_next_upstream"/>.
243 И, кроме того, есть параметр updating, которой разрешает использовать 222 Кроме того, дополнительный параметр <literal>updating</literal>
244 устаревший закэшированный ответ, если на данный момент он уже обновляется. 223 разрешает использовать устаревший закэшированный ответ,
224 если на данный момент он уже обновляется.
225 </para>
226
227 </directive>
228
229
230 <directive name="fastcgi_cache_valid">
231 <syntax>[<value>код</value> ...] <value>время</value></syntax>
232 <default/>
233 <context>http</context>
234 <context>server</context>
235 <context>location</context>
236
237 <para>
238 Задаёт время кэширования для разных кодов ответа.
239 Например, директивы
240 <example>
241 fastcgi_cache_valid 200 302 10m;
242 fastcgi_cache_valid 404 1m;
243 </example>
244 задают время кэширования 10 минут для ответов с кодами 200 и 302,
245 и 1 минуту для ответов с кодом 404.
246 </para>
247
248 <para>
249 Если указано только <value>время</value> кэширования,
250 <example>
251 fastcgi_cache_valid 5m;
252 </example>
253 то кэшируются только ответы 200, 301 и 302.
254 </para>
255
256 <para>
257 Кроме того, можно кэшировать любые ответы с помощью параметра
258 <literal>any</literal>:
259 <example>
260 fastcgi_cache_valid 200 302 10m;
261 fastcgi_cache_valid 301 1h;
262 fastcgi_cache_valid any 1m;
263 </example>
245 </para> 264 </para>
246 265
247 </directive> 266 </directive>
248 267
249 268
250 <directive name="fastcgi_connect_timeout"> 269 <directive name="fastcgi_connect_timeout">
251 <syntax><value>время</value></syntax> 270 <syntax><value>время</value></syntax>
252 <default>60</default> 271 <default>60s</default>
253 <context>http, server, location</context> 272 <context>http</context>
254 273 <context>server</context>
255 <para> 274 <context>location</context>
256 Директива задаёт таймаут для соединения с FastCGI-сервером. 275
257 Необходимо иметь в виду, что этот таймаут не может быть больше 75 секунд. 276 <para>
258 </para> 277 Задаёт таймаут для установления соединения с FastCGI-сервером.
259 278 Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд.
260 </directive>
261
262
263 <directive name="fastcgi_index">
264 <syntax><value>имя</value></syntax>
265 <default/>
266 <context>http, server, location</context>
267
268 <para>
269 Директива задаёт имя файла, который при создании переменной
270 $fastcgi_script_name будет добавляться после URI, если URI
271 заканчивается слэшом. Например, при таких настройках
272 <example>
273 fastcgi_index index.php;
274 fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
275 </example>
276 и запросе "/page.php" параметр SCRIPT_FILENAME будет равен
277 "/home/www/scripts/php/page.php",
278 а при запросе "/" — "/home/www/scripts/php/index.php".
279 </para> 279 </para>
280 280
281 </directive> 281 </directive>
282 282
283 283
284 <directive name="fastcgi_hide_header"> 284 <directive name="fastcgi_hide_header">
285 <syntax><value>имя</value></syntax> 285 <syntax><value>поле</value></syntax>
286 <default/> 286 <default/>
287 <context>http, server, location</context> 287 <context>http</context>
288 288 <context>server</context>
289 <para> 289 <context>location</context>
290 nginx не передаёт клиенту строки заголовка "Status" и "X-Accel-..." 290
291 из ответа FastCGI-сервера. 291 <para>
292 Директива fastcgi_hide_header задаёт дополнительные строки. 292 По умолчанию
293 Если же строки нужно напротив разрешить, следует воспользоваться 293 nginx не передаёт клиенту поля заголовка <header>Status</header> и
294 <header>X-Accel-...</header> из ответа FastCGI-сервера.
295 Директива <literal>fastcgi_hide_header</literal> задаёт дополнительные поля,
296 которые не будут передаваться.
297 Если же передачу полей нужно разрешить, можно воспользоваться
294 директивой <link id="fastcgi_pass_header"/>. 298 директивой <link id="fastcgi_pass_header"/>.
295 </para> 299 </para>
296 300
297 </directive> 301 </directive>
298 302
299 303
300 <directive name="fastcgi_ignore_client_abort"> 304 <directive name="fastcgi_ignore_client_abort">
301 <syntax><literal>on</literal> | <literal>off</literal></syntax> 305 <syntax><literal>on</literal> | <literal>off</literal></syntax>
302 <default>off</default> 306 <default>off</default>
303 <context>http, server, location</context> 307 <context>http</context>
304 308 <context>server</context>
305 309 <context>location</context>
306 <para> 310
307 Директива определяет, закрывать ли соединение с FastCGI-сервером 311 <para>
312 Определяет, закрывать ли соединение с FastCGI-сервером
308 в случае, если клиент закрыл соединение, не дождавшись ответа. 313 в случае, если клиент закрыл соединение, не дождавшись ответа.
309 </para> 314 </para>
310 315
311 </directive> 316 </directive>
312 317
313 318
314 <directive name="fastcgi_ignore_headers"> 319 <directive name="fastcgi_ignore_headers">
315 <syntax><value>имя</value> ...</syntax> 320 <syntax><value>поле</value> ...</syntax>
316 <default/> 321 <default/>
317 <context>http, server, location</context> 322 <context>http</context>
318 323 <context>server</context>
319 <para> 324 <context>location</context>
320 Директива fastcgi_ignore_headers запрещает обработку некоторых 325
321 строк заголовка из ответа FastCGI-сервера. 326 <para>
322 В директиве можно указать строки "X-Accel-Redirect", "X-Accel-Expires", 327 Запрещает обработку некоторых полей заголовка из ответа FastCGI-сервера.
323 "X-Accel-Limit-Rate" (1.1.6), "X-Accel-Buffering" (1.1.6), 328 В директиве можно указать поля <header>X-Accel-Redirect</header>,
324 "X-Accel-Charset" (1.1.6), "Expires", "Cache-Control" и "Set-Cookie" (0.8.44). 329 <header>X-Accel-Expires</header>, <header>X-Accel-Limit-Rate</header> (1.1.6),
330 <header>X-Accel-Buffering</header> (1.1.6),
331 <header>X-Accel-Charset</header> (1.1.6), <header>Expires</header>,
332 <header>Cache-Control</header> и <header>Set-Cookie</header> (0.8.44).
333 </para>
334
335 </directive>
336
337
338 <directive name="fastcgi_index">
339 <syntax><value>имя</value></syntax>
340 <default/>
341 <context>http</context>
342 <context>server</context>
343 <context>location</context>
344
345 <para>
346 Задаёт имя файла, который при создании переменной
347 <var>$fastcgi_script_name</var> будет добавляться после URI,
348 если URI заканчивается слэшом.
349 Например, при таких настройках
350 <example>
351 fastcgi_index index.php;
352 fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
353 </example>
354 и запросе “<literal>/page.php</literal>”
355 параметр <literal>SCRIPT_FILENAME</literal> будет равен
356 “<literal>/home/www/scripts/php/page.php</literal>”,
357 а при запросе “<literal>/</literal>”&mdash;
358 “<literal>/home/www/scripts/php/index.php</literal>”.
325 </para> 359 </para>
326 360
327 </directive> 361 </directive>
328 362
329 363
330 <directive name="fastcgi_intercept_errors"> 364 <directive name="fastcgi_intercept_errors">
331 <syntax><literal>on</literal> | <literal>off</literal></syntax> 365 <syntax><literal>on</literal> | <literal>off</literal></syntax>
332 <default>off</default> 366 <default>off</default>
333 <context>http, server, location</context> 367 <context>http</context>
334 368 <context>server</context>
335 <para> 369 <context>location</context>
336 Директива определяет, передавать ли клиенту ответы FastCGI-сервера с кодом 370
337 больше или равные 400 или же перенаправлять их на обработку nginx'у с помощью 371 <para>
338 директивы error_page. 372 Определяет, передавать ли клиенту ответы FastCGI-сервера с кодом
339 </para> 373 больше либо равным 400, или же перенаправлять их на обработку nginx'у с помощью
340 374 директивы <link doc="ngx_http_core_module.xml" id="error_page"/>.
341 </directive>
342
343
344 <directive name="fastcgi_no_cache">
345 <syntax><value>строка</value> ...</syntax>
346 <default/>
347 <context>http, server, location</context>
348
349 <para>
350 Директива задаёт условия, при которых ответ не будет сохраняться в кэш.
351 Если значение хотя бы одной из строк переменных не пустое и не равно "0",
352 то ответ не будет сохранён:
353 <example>
354 fastcgi_no_cache $cookie_nocache $arg_nocache$arg_comment;
355 fastcgi_no_cache $http_pragma $http_authorization;
356 </example>
357 Можно использовать совместно с директивой
358 <link id="fastcgi_cache_bypass"/>.
359 </para> 375 </para>
360 376
361 </directive> 377 </directive>
362 378
363 379
370 <literal>http_503</literal> | 386 <literal>http_503</literal> |
371 <literal>http_404</literal> | 387 <literal>http_404</literal> |
372 <literal>off</literal> 388 <literal>off</literal>
373 ...</syntax> 389 ...</syntax>
374 <default>error timeout</default> 390 <default>error timeout</default>
375 <context>http, server, location</context> 391 <context>http</context>
376 392 <context>server</context>
377 393 <context>location</context>
378 <para> 394
379 Директива определяет, в каких случаях запрос будет передан следующему серверу: 395 <para>
380 <list type="bullet"> 396 Определяет, в каких случаях запрос будет передан следующему серверу:
381 397 <list type="tag">
382 <listitem> 398
383 error — произшла ошибка соединения с сервером, передачи ему запроса или 399 <tag-name><literal>error</literal></tag-name>
384 чтения заголовка ответа сервера; 400 <tag-desc>произошла ошибка соединения с сервером, передачи ему запроса или
385 </listitem> 401 чтения заголовка ответа сервера;</tag-desc>
386 402
387 <listitem> 403 <tag-name><literal>timeout</literal></tag-name>
388 timeout — произошёл таймаут во время соединения с сервером, 404 <tag-desc>произошёл таймаут во время соединения с сервером,
389 передачи ему запроса или чтения заголовка ответа сервера; 405 передачи ему запроса или чтения заголовка ответа сервера;</tag-desc>
390 </listitem> 406
391 407 <tag-name><literal>invalid_header</literal></tag-name>
392 <listitem> 408 <tag-desc>сервер вернул пустой или неверный ответ;</tag-desc>
393 invalid_header — сервер вернул пустой или неверный ответ; 409
394 </listitem> 410 <tag-name><literal>http_500</literal></tag-name>
395 411 <tag-desc>сервер вернул ответ с кодом 500;</tag-desc>
396 <listitem> 412
397 http_500 — сервер вернул ответ с кодом 500; 413 <tag-name><literal>http_503</literal></tag-name>
398 </listitem> 414 <tag-desc>сервер вернул ответ с кодом 503;</tag-desc>
399 415
400 <listitem> 416 <tag-name><literal>http_404</literal></tag-name>
401 http_503 — сервер вернул ответ с кодом 503; 417 <tag-desc>сервер вернул ответ с кодом 404;</tag-desc>
402 </listitem> 418
403 419 <tag-name><literal>off</literal></tag-name>
404 <listitem> 420 <tag-desc>запрещает передачу запроса следующему серверу.</tag-desc>
405 http_404 — сервер вернул ответ с кодом 404;
406 </listitem>
407
408 <listitem>
409 off — запрещает передачу запроса следующему серверу;
410 </listitem>
411 421
412 </list> 422 </list>
413 </para> 423 </para>
414 424
415 <para> 425 <para>
420 </para> 430 </para>
421 431
422 </directive> 432 </directive>
423 433
424 434
435 <directive name="fastcgi_no_cache">
436 <syntax><value>строка</value> ...</syntax>
437 <default/>
438 <context>http</context>
439 <context>server</context>
440 <context>location</context>
441
442 <para>
443 Задаёт условия, при которых ответ не будет сохраняться в кэш.
444 Если значение хотя бы одного из строковых параметров непустое и не равно “0”,
445 то ответ не будет сохранён:
446 <example>
447 fastcgi_no_cache $cookie_nocache $arg_nocache$arg_comment;
448 fastcgi_no_cache $http_pragma $http_authorization;
449 </example>
450 Можно использовать совместно с директивой <link id="fastcgi_cache_bypass"/>.
451 </para>
452
453 </directive>
454
455
425 <directive name="fastcgi_param"> 456 <directive name="fastcgi_param">
426 <syntax> 457 <syntax>
427 <value>параметр</value> <value>значение</value> 458 <value>параметр</value> <value>значение</value>
428 [<literal>if_not_empty</literal>]</syntax> 459 [<literal>if_not_empty</literal>]</syntax>
429 <default/> 460 <default/>
430 <context>http, server, location</context> 461 <context>http</context>
431 462 <context>server</context>
432 <para> 463 <context>location</context>
433 Директива задаёт параметр, который будут передаваться FastCGI-серверу. 464
465 <para>
466 Задаёт <value>параметр</value>, который будет передаваться FastCGI-серверу.
434 В качестве значения можно использовать текст, переменные и их комбинации. 467 В качестве значения можно использовать текст, переменные и их комбинации.
435 Директивы наследуются с предыдущего уровня при условии, что на данном 468 Директивы наследуются с предыдущего уровня при условии, что на данном
436 уровне не описаны свои директивы <literal>fastcgi_param</literal>. 469 уровне не описаны свои директивы <literal>fastcgi_param</literal>.
437 </para> 470 </para>
438 471
439 <para> 472 <para>
440 Ниже приведён пример минимально необходимых параметров для PHP: 473 Ниже приведён пример минимально необходимых параметров для PHP:
441 <example> 474 <example>
442 fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name; 475 fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
443 fastcgi_param QUERY_STRING $query_string; 476 fastcgi_param QUERY_STRING $query_string;
444 </example> 477 </example>
445 </para> 478 </para>
446 479
447 <para> 480 <para>
448 Параметр SCRIPT_FILENAME используется в PHP для определения имени скрипта, 481 Параметр <literal>SCRIPT_FILENAME</literal> используется в PHP для
449 а в параметре QUERY_STRING передаются параметры запроса. 482 определения имени скрипта, а в параметре <literal>QUERY_STRING</literal>
450 </para> 483 передаются параметры запроса.
451 484 </para>
452 <para> 485
453 Если скрипты обрабатывают запросы POST, то нужны ещё три параметра: 486 <para>
454 <example> 487 Если скрипты обрабатывают запросы <literal>POST</literal>, то нужны
455 fastcgi_param REQUEST_METHOD $request_method; 488 ещё три параметра:
456 fastcgi_param CONTENT_TYPE $content_type; 489 <example>
457 fastcgi_param CONTENT_LENGTH $content_length; 490 fastcgi_param REQUEST_METHOD $request_method;
491 fastcgi_param CONTENT_TYPE $content_type;
492 fastcgi_param CONTENT_LENGTH $content_length;
458 </example> 493 </example>
459 </para> 494 </para>
460 495
461 <para> 496 <para>
462 Если PHP был собран с параметром конфигурации 497 Если PHP был собран с параметром конфигурации
463 <literal>--enable-force-cgi-redirect</literal>, то нужно передавать 498 <literal>--enable-force-cgi-redirect</literal>, то нужно передавать
464 параметр REDIRECT_STATUS со значением "200": 499 параметр <literal>REDIRECT_STATUS</literal> со значением “200”:
465 <example> 500 <example>
466 fastcgi_param REDIRECT_STATUS 200; 501 fastcgi_param REDIRECT_STATUS 200;
467 </example> 502 </example>
468 </para> 503 </para>
469 504
470 <para> 505 <para>
471 Если директива указана с флагом <literal>if_not_empty</literal> (1.1.11), 506 Если директива указана с <literal>if_not_empty</literal> (1.1.11),
472 то такой параметр с пустым значением передаваться на сервер не будет: 507 то такой параметр с пустым значением передаваться на сервер не будет:
473 <example> 508 <example>
474 fastcgi_param HTTPS $https if_not_empty; 509 fastcgi_param HTTPS $https if_not_empty;
475 </example> 510 </example>
476 </para> 511 </para>
477 512
478 </directive> 513 </directive>
479 514
480 515
481 <directive name="fastcgi_pass"> 516 <directive name="fastcgi_pass">
482 <syntax><value>fastcgi-server</value></syntax> 517 <syntax><value>адрес</value></syntax>
483 <default/> 518 <default/>
484 <context>location, if в location</context> 519 <context>location</context>
485 520 <context>if в location</context>
486 <para> 521
487 Директива задаёт адрес FastCGI-сервера. 522 <para>
488 Адрес может быть указан в виде доменного имени или адреса и порта, например, 523 Задаёт адрес FastCGI-сервера.
489 <example> 524 Адрес может быть указан в виде доменного имени или адреса, и порта, например,
490 fastcgi_pass localhost:9000; 525 <example>
491 </example> 526 fastcgi_pass localhost:9000;
492 или в виде пути unix сокета: 527 </example>
493 <example> 528 или в виде пути UNIX-сокета:
494 fastcgi_pass unix:/tmp/fastcgi.socket; 529 <example>
495 </example> 530 fastcgi_pass unix:/tmp/fastcgi.socket;
496 </para> 531 </example>
497 532 </para>
498 <para> 533
499 Если доменное имя резолвится в несколько адресов, то все они будут 534 <para>
500 использоваться в режиме round-robin. 535 Если доменному имени соответствует несколько адресов, то все они будут
501 И кроме того, адрес может быть 536 использоваться по очереди (round-robin).
537 И, кроме того, адрес может быть
502 <link doc="ngx_http_upstream_module.xml">группой серверов</link>. 538 <link doc="ngx_http_upstream_module.xml">группой серверов</link>.
503 </para> 539 </para>
504 540
505 </directive> 541 </directive>
506 542
507 543
508 <directive name="fastcgi_pass_header"> 544 <directive name="fastcgi_pass_header">
509 <syntax><value>имя</value></syntax> 545 <syntax><value>поле</value></syntax>
510 <default/> 546 <default/>
511 <context>http, server, location</context> 547 <context>http</context>
512 548 <context>server</context>
513 <para> 549 <context>location</context>
514 Директива разрешает передавать клиенту запрещённые для передачи строки. 550
551 <para>
552 Разрешает передавать от FastCGI-сервера клиенту
553 <link id="fastcgi_hide_header">запрещённые для передачи</link> поля заголовка.
515 </para> 554 </para>
516 555
517 </directive> 556 </directive>
518 557
519 558
520 <directive name="fastcgi_read_timeout"> 559 <directive name="fastcgi_read_timeout">
521 <syntax><value>время</value></syntax> 560 <syntax><value>время</value></syntax>
522 <default>60</default> 561 <default>60s</default>
523 <context>http, server, location</context> 562 <context>http</context>
524 563 <context>server</context>
525 <para> 564 <context>location</context>
526 Директива задаёт таймаут при чтении ответа FastCGI-сервера. 565
566 <para>
567 Задаёт таймаут при чтении ответа FastCGI-сервера.
527 Таймаут устанавливается не на всю передачу ответа, 568 Таймаут устанавливается не на всю передачу ответа,
528 а только между двумя операциями чтения. 569 а только между двумя операциями чтения.
529 Если по истечении этого времени FastCGI-сервер ничего не передаст, 570 Если по истечении этого времени FastCGI-сервер ничего не передаст,
530 то nginx закрывает соединение. 571 соединение закрывается.
531 </para> 572 </para>
532 573
533 </directive> 574 </directive>
534 575
535 576
536 <directive name="fastcgi_send_timeout"> 577 <directive name="fastcgi_send_timeout">
537 <syntax><value>время</value></syntax> 578 <syntax><value>время</value></syntax>
538 <default>60</default> 579 <default>60s</default>
539 <context>http, server, location</context> 580 <context>http</context>
540 581 <context>server</context>
541 <para> 582 <context>location</context>
542 Директива задаёт таймаут при передаче запроса FastCGI-серверу. 583
584 <para>
585 Задаёт таймаут при передаче запроса FastCGI-серверу.
543 Таймаут устанавливается не на всю передачу запроса, 586 Таймаут устанавливается не на всю передачу запроса,
544 а только между двумя операциями записи. 587 а только между двумя операциями записи.
545 Если по истечении этого времени FastCGI-сервер не примет новых данных, 588 Если по истечении этого времени FastCGI-сервер не примет новых данных,
546 то nginx закрывает соединение. 589 соединение закрывается.
547 </para> 590 </para>
548 591
549 </directive> 592 </directive>
550 593
551 594
553 <syntax><value>regex</value></syntax> 596 <syntax><value>regex</value></syntax>
554 <default/> 597 <default/>
555 <context>location</context> 598 <context>location</context>
556 599
557 <para> 600 <para>
558 Директива задаёт регулярное выражение, выделяющее 601 Задаёт регулярное выражение, выделяющее значение для переменной
559 значение для переменной $fastcgi_path_info. 602 <var>$fastcgi_path_info</var>.
560 Регулярное выражение должно иметь два выделения, из которых первое 603 Регулярное выражение должно иметь два выделения, из которых первое
561 становиться значением переменной $fastcgi_script_name, 604 становится значением переменной <var>$fastcgi_script_name</var>,
562 а второе — значением переменной $fastcgi_path_info. 605 а второе&mdash;значением переменной <var>$fastcgi_path_info</var>.
563 Например, при таких настройках 606 Например, при таких настройках
564 <example> 607 <example>
565 location ~ ^(.+\.php)(.*)$ { 608 location ~ ^(.+\.php)(.*)$ {
566 fastcgi_split_path_info ^(.+\.php)(.*)$; 609 fastcgi_split_path_info ^(.+\.php)(.*)$;
567 fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name; 610 fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
568 fastcgi_param PATH_INFO $fastcgi_path_info; 611 fastcgi_param PATH_INFO $fastcgi_path_info;
569 </example> 612 </example>
570 и запросе "/show.php/article/0001" параметр SCRIPT_FILENAME будет 613 и запросе “<literal>/show.php/article/0001</literal>”
571 равен "/path/to/php/show.php", а параметр PATH_INFO — "/article/0001". 614 параметр <literal>SCRIPT_FILENAME</literal> будет равен
615 “<literal>/path/to/php/show.php</literal>”, а параметр
616 <literal>PATH_INFO</literal>&mdash;“<literal>/article/0001</literal>”.
572 </para> 617 </para>
573 618
574 </directive> 619 </directive>
575 620
576 621
577 <directive name="fastcgi_store"> 622 <directive name="fastcgi_store">
578 <syntax> 623 <syntax>
579 <literal>on</literal> | 624 <literal>on</literal> |
580 <literal>off</literal> | 625 <literal>off</literal> |
581 <value>строка</value></syntax> 626 <value>строка</value></syntax>
582 <default>off</default> 627 <default>off</default>
583 <context>http, server, location</context> 628 <context>http</context>
584 629 <context>server</context>
585 <para> 630 <context>location</context>
586 Директива разрешает сохранение на диск файлов. 631
587 Параметр "on" сохраняет файлы в соответствии с путями, указанными в директивах 632 <para>
633 Разрешает сохранение на диск файлов.
634 Параметр <literal>on</literal> сохраняет файлы в соответствии с путями,
635 указанными в директивах
588 <link doc="ngx_http_core_module.xml" id="alias"/> или 636 <link doc="ngx_http_core_module.xml" id="alias"/> или
589 <link doc="ngx_http_core_module.xml" id="root"/>. 637 <link doc="ngx_http_core_module.xml" id="root"/>.
590 Параметр "off" запрещает сохранение файлов. 638 Параметр <literal>off</literal> запрещает сохранение файлов.
591 Кроме того, имя файла можно явно задать с помощью строки с переменными: 639 Кроме того, имя файла можно задать явно с помощью строки с переменными:
592 <example> 640 <example>
593 fastcgi_store /data/www$original_uri; 641 fastcgi_store /data/www$original_uri;
594 </example> 642 </example>
595 </para> 643 </para>
596 644
597 <para> 645 <para>
598 Время модификации файлов выставляется согласно полученной строке 646 Время изменения файлов выставляется согласно полученному полю
599 "Last-Modified" в заголовке ответа. 647 <header>Last-Modified</header> в заголовке ответа.
600 Ответ записывается во временный файл, а потом этот файл переименовывается. 648 Ответ сначала записывается во временный файл, а потом этот файл
649 переименовывается.
601 Начиная с версии 0.8.9, временный файл и постоянное место хранения ответа 650 Начиная с версии 0.8.9, временный файл и постоянное место хранения ответа
602 могут располагаться на разных файловых системах, но нужно учитывать, 651 могут располагаться на разных файловых системах, но нужно учитывать,
603 что в этом случае вместо дешёвой операции переименовывания в пределах 652 что в этом случае вместо дешёвой операции переименовывания в пределах
604 одной файловой системы файл копируется с одной файловой системы на другую. 653 одной файловой системы файл копируется с одной файловой системы на другую.
605 Поэтому лучше, если сохраняемые файлы будут находиться на той же файловой 654 Поэтому лучше, если сохраняемые файлы будут находиться на той же файловой
607 <link id="fastcgi_temp_path"/> для данного location. 656 <link id="fastcgi_temp_path"/> для данного location.
608 </para> 657 </para>
609 658
610 <para> 659 <para>
611 Директиву можно использовать для создания локальных копий статических 660 Директиву можно использовать для создания локальных копий статических
612 неизменяемых файлов, например: 661 неизменяемых файлов, например, так:
613 <example> 662 <example>
614 location /images/ { 663 location /images/ {
615 root /data/www; 664 root /data/www;
616 open_file_cache_errors off; 665 open_file_cache_errors off;
617 error_page 404 = /fetch$uri; 666 error_page 404 = /fetch$uri;
618 } 667 }
619 668
620 location /fetch/ { 669 location /fetch/ {
621 internal; 670 internal;
622 671
623 fastcgi_pass backend:9000; 672 fastcgi_pass backend:9000;
624 ... 673 ...
625 674
626 fastcgi_store on; 675 fastcgi_store on;
627 fastcgi_store_access user:rw group:rw all:r; 676 fastcgi_store_access user:rw group:rw all:r;
628 fastcgi_temp_path /data/temp; 677 fastcgi_temp_path /data/temp;
629 678
630 alias /data/www/; 679 alias /data/www/;
631 } 680 }
632 </example> 681 </example>
633 </para> 682 </para>
634 683
635 </directive> 684 </directive>
636 685
637 686
638 <directive name="fastcgi_store_access"> 687 <directive name="fastcgi_store_access">
639 <syntax><value>пользователи</value>:<value>права</value> ...</syntax> 688 <syntax><value>пользователи</value>:<value>права</value> ...</syntax>
640 <default>user:rw</default> 689 <default>user:rw</default>
641 <context>http, server, location</context> 690 <context>http</context>
642 691 <context>server</context>
643 <para> 692 <context>location</context>
644 Директива задаёт права доступа для создаваемых файлов и каталогов, например, 693
645 <example> 694 <para>
646 fastcgi_store_access user:rw group:rw all:r; 695 Задаёт права доступа для создаваемых файлов и каталогов, например,
647 </example> 696 <example>
648 </para> 697 fastcgi_store_access user:rw group:rw all:r;
649 698 </example>
650 <para> 699 </para>
651 Если заданы какие-либо права для groups или all, то права для user 700
701 <para>
702 Если заданы какие-либо права для <literal>group</literal> или
703 <literal>all</literal>, то права для <literal>user</literal>
652 указывать необязательно: 704 указывать необязательно:
653 <example> 705 <example>
654 fastcgi_store_access group:rw all:r; 706 fastcgi_store_access group:rw all:r;
655 </example> 707 </example>
656 </para> 708 </para>
657 709
658 </directive> 710 </directive>
659 711
660 712
661 <directive name="fastcgi_temp_path"> 713 <directive name="fastcgi_temp_path">
662 <syntax><value>путь</value> [<value>уровень1</value> [<value>уровень2</value> [<value>уровень3</value>]]]</syntax> 714 <syntax>
715 <value>путь</value>
716 [<value>уровень1</value>
717 [<value>уровень2</value>
718 [<value>уровень3</value>]]]</syntax>
663 <default>fastcgi_temp</default> 719 <default>fastcgi_temp</default>
664 <context>http, server, location</context> 720 <context>http</context>
665 721 <context>server</context>
666 <para> 722 <context>location</context>
667 Директива задаёт имя каталога для хранения временных файлов 723
724 <para>
725 Задаёт имя каталога для хранения временных файлов,
668 полученных от другого сервера. 726 полученных от другого сервера.
669 В каталоге может использоваться иерархия подкаталогов до трёх уровней. 727 В каталоге может использоваться иерархия подкаталогов до трёх уровней.
670 Например, при такой конфигурации 728 Например, при такой конфигурации
671 <example> 729 <example>
672 fastcgi_temp_path /spool/nginx/fastcgi_temp 1 2; 730 fastcgi_temp_path /spool/nginx/fastcgi_temp 1 2;
673 </example> 731 </example>
674 имя временного будет такого вида: 732 временный файл будет следующего вида:
675 <example> 733 <example>
676 /spool/nginx/fastcgi_temp/7/45/00000123457 734 /spool/nginx/fastcgi_temp/<emphasis>7</emphasis>/<emphasis>45</emphasis>/00000123<emphasis>457</emphasis>
677 </example> 735 </example>
678 </para> 736 </para>
679 737
680 </directive> 738 </directive>
681 739
682 </section> 740 </section>
683 741
684 742
685 <section name="Параметры, передаваемые FastCGI-серверу" id="parameters"> 743 <section id="parameters" name="Параметры, передаваемые FastCGI-серверу">
686 744
687 <para> 745 <para>
688 Строки заголовка HTTP запроса передаются FastCGI-серверу в виде параметров. 746 Поля заголовка HTTP-запроса передаются FastCGI-серверу в виде параметров.
689 В приложениях и скриптах, запущенных в виде FastCGI-сервера, 747 В приложениях и скриптах, запущенных в виде FastCGI-сервера,
690 эти параметры обычно доступны в виде переменных среды. 748 эти параметры обычно доступны в виде переменных среды.
691 Например, строка заголовка "User-Agent" передаётся как параметр 749 Например, поле заголовка <header>User-Agent</header> передаётся как параметр
692 HTTP_USER_AGENT. 750 <literal>HTTP_USER_AGENT</literal>.
693 Кроме строк заголовка HTTP запроса, можно передавать произвольные параметры 751 Кроме полей заголовка HTTP-запроса можно передавать произвольные параметры
694 с помощью директивы <link id="fastcgi_param"/>. 752 с помощью директивы <link id="fastcgi_param"/>.
695 </para> 753 </para>
696 754
697 </section> 755 </section>
698 756
699 757
700 <section name="Встроенные переменные" id="variables"> 758 <section id="variables" name="Встроенные переменные">
701 759
702 <para> 760 <para>
703 В модуле ngx_http_fastcgi_module есть встроенные переменные, 761 В модуле <literal>ngx_http_fastcgi_module</literal> есть встроенные переменные,
704 которые можно использовать для формирования параметров с помощью директивы 762 которые можно использовать для формирования параметров с помощью директивы
705 <link id="fastcgi_param"/>: 763 <link id="fastcgi_param"/>:
706 <list type="bullet"> 764 <list type="tag">
707 765
708 <listitem> 766 <tag-name><var>$fastcgi_script_name</var></tag-name>
709 <para> 767 <tag-desc>
710 $fastcgi_script_name, эта переменная равна URI запроса 768 <para>
711 или же, если URI заканчивается слэшом, то — URI запроса плюс имя 769 URI запроса или же, если URI заканчивается слэшом,
712 индексного файла, задаваемого директивой <link id="fastcgi_index"/>. 770 то URI запроса, дополненное именем индексного файла, задаваемого директивой
713 Эту переменную можно использовать для задания параметра SCRIPT_FILENAME 771 <link id="fastcgi_index"/>.
714 и PATH_TRANSLATED, используемых, в частности, для определения имени 772 Эту переменную можно использовать для задания параметров
715 скрипта в PHP. Например, для запроса "/info/" и при использовании директив 773 <literal>SCRIPT_FILENAME</literal> и <literal>PATH_TRANSLATED</literal>,
716 <example> 774 используемых, в частности, для определения имени скрипта в PHP.
717 fastcgi_index index.php; 775 Например, для запроса “<literal>/info/</literal>” и при использовании
718 fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name; 776 директив
719 </example> 777 <example>
720 параметр SCRIPT_FILENAME будут равен "/home/www/scripts/php/info/index.php". 778 fastcgi_index index.php;
779 fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
780 </example>
781 параметр <literal>SCRIPT_FILENAME</literal> будет равен
782 “<literal>/home/www/scripts/php/info/index.php</literal>”.
721 </para> 783 </para>
722 784
723 <para> 785 <para>
724 При использовании директивы <link id="fastcgi_split_path_info"/> 786 При использовании директивы <link id="fastcgi_split_path_info"/>
725 переменная $fastcgi_script_name равна значению первого выделения, 787 переменная <var>$fastcgi_script_name</var> равна значению первого выделения,
726 задаваемого этой директивой. 788 задаваемого этой директивой.
727 </para> 789 </para>
728 </listitem> 790 </tag-desc>
729 791
730 <listitem> 792 <tag-name><var>$fastcgi_path_info</var></tag-name>
731 $fastcgi_path_info, эта переменная равна значению второго выделения, 793 <tag-desc>значение второго выделения, задаваемого директивой
732 задаваемого директивой <link id="fastcgi_split_path_info"/>. 794 <link id="fastcgi_split_path_info"/>.
733 Эту переменную можно использовать для задания параметра PATH_INFO. 795 Эту переменную можно использовать для задания параметра
734 </listitem> 796 <literal>PATH_INFO</literal>.
797 </tag-desc>
735 798
736 </list> 799 </list>
737 </para> 800 </para>
738 801
739 </section> 802 </section>