Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/ru/docs/stream/ngx_stream_upstream_module.xml
1 views
1
<?xml version="1.0"?>
2
3
<!--
4
Copyright (C) Nginx, Inc.
5
-->
6
7
<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
8
9
<module name="Модуль ngx_stream_upstream_module"
10
link="/ru/docs/stream/ngx_stream_upstream_module.html"
11
lang="ru"
12
rev="42">
13
14
<section id="summary">
15
16
<para>
17
Модуль <literal>ngx_stream_upstream_module</literal> (1.9.0)
18
позволяет описывать группы серверов,
19
которые могут использоваться в директиве
20
<link doc="ngx_stream_proxy_module.xml" id="proxy_pass"/>.
21
</para>
22
23
</section>
24
25
26
<section id="example" name="Пример конфигурации">
27
28
<para>
29
<example>
30
upstream <emphasis>backend</emphasis> {
31
hash $remote_addr consistent;
32
33
server backend1.example.com:12345 weight=5;
34
server backend2.example.com:12345;
35
server unix:/tmp/backend3;
36
37
server backup1.example.com:12345 backup;
38
server backup2.example.com:12345 backup;
39
}
40
41
server {
42
listen 12346;
43
proxy_pass <emphasis>backend</emphasis>;
44
}
45
</example>
46
</para>
47
48
<para>
49
Динамически настраиваемая группа
50
с периодическими
51
<link doc="ngx_stream_upstream_hc_module.xml">проверками работоспособности</link>
52
доступна как часть
53
<commercial_version>коммерческой подписки</commercial_version>:
54
<example>
55
resolver 10.0.0.1;
56
57
upstream <emphasis>dynamic</emphasis> {
58
zone upstream_dynamic 64k;
59
60
server backend1.example.com:12345 weight=5;
61
server backend2.example.com:12345 fail_timeout=5s slow_start=30s;
62
server 192.0.2.1:12345 max_fails=3;
63
server backend3.example.com:12345 resolve;
64
server backend4.example.com service=http resolve;
65
66
server backup1.example.com:12345 backup;
67
server backup2.example.com:12345 backup;
68
}
69
70
server {
71
listen 12346;
72
proxy_pass <emphasis>dynamic</emphasis>;
73
health_check;
74
}
75
</example>
76
</para>
77
78
</section>
79
80
81
<section id="directives" name="Директивы">
82
83
<directive name="upstream">
84
<syntax block="yes"><value>название</value></syntax>
85
<default/>
86
<context>stream</context>
87
88
<para>
89
Описывает группу серверов.
90
Серверы могут слушать на разных портах.
91
Кроме того, можно одновременно использовать серверы,
92
слушающие на TCP- и UNIX-сокетах.
93
</para>
94
95
<para>
96
Пример:
97
<example>
98
upstream backend {
99
server backend1.example.com:12345 weight=5;
100
server 127.0.0.1:12345 max_fails=3 fail_timeout=30s;
101
server unix:/tmp/backend2;
102
server backend3.example.com:12345 resolve;
103
104
server backup1.example.com:12345 backup;
105
}
106
</example>
107
</para>
108
109
<para>
110
По умолчанию соединения распределяются по серверам циклически
111
(в режиме round-robin) с учётом весов серверов.
112
В вышеприведённом примере каждые 7 соединений будут распределены так:
113
5 соединений на <literal>backend1.example.com:12345</literal>
114
и по одному соединению на второй и третий серверы.
115
Если при попытке работы с сервером происходит ошибка, то соединение
116
передаётся следующему серверу, и так далее до тех пор, пока не будут опробованы
117
все работающие серверы.
118
Если связь с серверами не удалась, соединение будет закрыто.
119
</para>
120
121
</directive>
122
123
124
<directive name="server">
125
<syntax><value>адрес</value> [<value>параметры</value>]</syntax>
126
<default/>
127
<context>upstream</context>
128
129
<para>
130
Задаёт <value>адрес</value> и другие <value>параметры</value>
131
сервера.
132
Адрес может быть указан в виде доменного имени или IP-адреса,
133
и обязательного порта, или в виде пути UNIX-сокета, который
134
указывается после префикса “<literal>unix:</literal>”.
135
Доменное имя, которому соответствует несколько IP-адресов,
136
задаёт сразу несколько серверов.
137
</para>
138
139
<para>
140
Могут быть заданы следующие параметры:
141
<list type="tag">
142
143
<tag-name id="weight">
144
<literal>weight</literal>=<value>число</value>
145
</tag-name>
146
<tag-desc>
147
задаёт вес сервера, по умолчанию 1.
148
</tag-desc>
149
150
<tag-name id="max_conns">
151
<literal>max_conns</literal>=<value>число</value>
152
</tag-name>
153
<tag-desc>
154
ограничивает максимальное <value>число</value> одновременных
155
соединений к проксируемому серверу (1.11.5).
156
Значение по умолчанию равно 0 и означает, что ограничения нет.
157
Если группа не находится в <link id="zone">зоне разделяемой памяти</link>,
158
то ограничение работает отдельно для каждого рабочего процесса.
159
<note>
160
До версии 1.11.5 этот параметр был доступен как часть
161
<commercial_version>коммерческой подписки</commercial_version>.
162
</note>
163
</tag-desc>
164
165
<tag-name id="max_fails">
166
<literal>max_fails</literal>=<value>число</value>
167
</tag-name>
168
<tag-desc>
169
задаёт число неудачных попыток работы с сервером, которые должны произойти
170
в течение времени, заданного параметром <literal>fail_timeout</literal>,
171
чтобы сервер считался недоступным на период времени, также заданный
172
параметром <literal>fail_timeout</literal>.
173
По умолчанию число попыток устанавливается равным 1.
174
Нулевое значение отключает учёт попыток.
175
В данном случае неудачной попыткой считается ошибка или таймаут
176
при установке соединения с сервером.
177
</tag-desc>
178
179
<tag-name id="fail_timeout">
180
<literal>fail_timeout</literal>=<value>время</value>
181
</tag-name>
182
<tag-desc>
183
задаёт
184
<list type="bullet">
185
186
<listitem>
187
время, в течение которого должно произойти заданное число неудачных
188
попыток работы с сервером для того, чтобы сервер считался недоступным;
189
</listitem>
190
191
<listitem>
192
и время, в течение которого сервер будет считаться недоступным.
193
</listitem>
194
195
</list>
196
По умолчанию параметр равен 10 секундам.
197
</tag-desc>
198
199
<tag-name id="backup">
200
<literal>backup</literal>
201
</tag-name>
202
<tag-desc>
203
помечает сервер как запасной сервер.
204
На него будут передаваться соединения в случае,
205
если не работают основные серверы.
206
<note>
207
Параметр нельзя использовать совместно с
208
методами балансировки нагрузки <link id="hash"/> и <link id="random"/>.
209
</note>
210
</tag-desc>
211
212
<tag-name id="down">
213
<literal>down</literal>
214
</tag-name>
215
<tag-desc>
216
помечает сервер как постоянно недоступный.
217
</tag-desc>
218
219
<tag-name id="resolve">
220
<literal>resolve</literal>
221
</tag-name>
222
<tag-desc>
223
отслеживает изменения IP-адресов, соответствующих доменному имени сервера,
224
и автоматически изменяет конфигурацию группы
225
без необходимости перезапуска nginx.
226
Группа должна находиться в <link id="zone">зоне разделяемой памяти</link>.
227
<para>
228
Для работы этого параметра
229
директива <literal>resolver</literal>
230
должна быть задана в блоке
231
<link doc="ngx_stream_core_module.xml" id="resolver">stream</link>
232
или в соответствующем блоке <link id="resolver">upstream</link>.
233
</para>
234
235
<para>
236
<note>
237
До версии 1.27.3 этот параметр был доступен только как часть
238
<commercial_version>коммерческой подписки</commercial_version>.
239
</note>
240
</para>
241
</tag-desc>
242
243
<tag-name id="service">
244
<literal>service</literal>=<value>имя</value>
245
</tag-name>
246
<tag-desc>
247
включает преобразование
248
<link url="https://datatracker.ietf.org/doc/html/rfc2782">SRV</link>-записей
249
DNS и задаёт <value>имя</value> сервиса (1.9.13).
250
Для работы параметра необходимо указать
251
параметр <link id="resolve"/> для сервера
252
и не указывать порт сервера.
253
<para>
254
Если имя сервиса не содержит точку (“<literal>.</literal>”), то
255
имя составляется в соответствии с
256
<link url="https://datatracker.ietf.org/doc/html/rfc2782">RFC</link>
257
и в префикс службы добавляется протокол TCP.
258
Например, для получения
259
SRV-записи <literal>_http._tcp.backend.example.com</literal>
260
необходимо указать директиву:
261
<example>
262
server backend.example.com service=http resolve;
263
</example>
264
Если имя сервиса содержит одну и более точек, то имя составляется
265
при помощи соединения префикса службы и имени сервера.
266
Например, для получения SRV-записей
267
<literal>_http._tcp.backend.example.com</literal>
268
и <literal>server1.backend.example.com</literal>
269
необходимо указать директивы:
270
<example>
271
server backend.example.com service=_http._tcp resolve;
272
server example.com service=server1.backend resolve;
273
</example>
274
</para>
275
276
<para>
277
SRV-записи с наивысшим приоритетом
278
(записи с одинаковым наименьшим значением приоритета)
279
преобразуются в основные серверы,
280
остальные SRV-записи преобразуются в запасные серверы.
281
Если в конфигурации сервера указан параметр <link id="backup"/>,
282
высокоприоритетные SRV-записи преобразуются в запасные серверы,
283
остальные SRV-записи игнорируются.
284
</para>
285
286
<para>
287
<note>
288
До версии 1.27.3 этот параметр был доступен только как часть
289
<commercial_version>коммерческой подписки</commercial_version>.
290
</note>
291
</para>
292
</tag-desc>
293
294
</list>
295
</para>
296
297
<para>
298
Кроме того,
299
следующие параметры доступны как часть
300
<commercial_version>коммерческой подписки</commercial_version>:
301
<list type="tag">
302
303
<tag-name id="slow_start">
304
<literal>slow_start</literal>=<value>время</value>
305
</tag-name>
306
<tag-desc>
307
задаёт <value>время</value>, в течение которого вес сервера
308
восстановится от нуля до своего номинального значения в ситуации, когда
309
неработоспособный (unhealthy) сервер вновь становится работоспособным
310
(<link doc="ngx_stream_upstream_hc_module.xml" id="health_check">healthy</link>)
311
или когда сервер становится доступным по прошествии времени,
312
в течение которого он считался <link id="fail_timeout">недоступным</link>.
313
Значение по умолчанию равно нулю и означает, что медленный старт выключен.
314
<note>
315
Параметр нельзя использовать совместно с
316
методами балансировки нагрузки <link id="hash"/> и <link id="random"/>.
317
</note>
318
</tag-desc>
319
320
</list>
321
</para>
322
323
<para>
324
<note>
325
Если в группе только один сервер, параметры <literal>max_fails</literal>,
326
<literal>fail_timeout</literal> и <literal>slow_start</literal>
327
игнорируются и такой сервер никогда не будет считаться недоступным.
328
</note>
329
</para>
330
331
</directive>
332
333
334
<directive name="zone">
335
<syntax><value>имя</value> [<value>размер</value>]</syntax>
336
<default/>
337
<context>upstream</context>
338
339
<para>
340
Задаёт <value>имя</value> и <value>размер</value> зоны разделяемой памяти,
341
в которой хранятся конфигурация группы и её рабочее состояние,
342
разделяемые между рабочими процессами.
343
В одной и той же зоне могут быть сразу несколько групп.
344
В этом случае достаточно указать <value>размер</value> только один раз.
345
</para>
346
347
<para>
348
Дополнительно, как часть
349
<commercial_version>коммерческой подписки</commercial_version>,
350
в таких группах для изменения состава группы
351
или настроек отдельных серверов
352
нет необходимости перезапускать nginx.
353
Конфигурация доступна через
354
модуль <link doc="../http/ngx_http_api_module.xml">API</link> (1.13.3).
355
<note>
356
До версии 1.13.3
357
конфигурация была доступна только через специальный location,
358
в котором указана директива
359
<link doc="../http/ngx_http_upstream_conf_module.xml" id="upstream_conf"/>.
360
</note>
361
</para>
362
363
</directive>
364
365
366
<directive name="state">
367
<syntax><value>файл</value></syntax>
368
<default/>
369
<context>upstream</context>
370
<appeared-in>1.9.7</appeared-in>
371
372
<para>
373
Задаёт <value>файл</value>, в котором хранится состояние
374
динамически настраиваемой группы.
375
</para>
376
377
<para>
378
Примеры:
379
<example>
380
state /var/lib/nginx/state/servers.conf; # путь для Linux
381
state /var/db/nginx/state/servers.conf; # путь для FreeBSD
382
</example>
383
</para>
384
385
<para>
386
В данный момент состояние ограничено списком серверов с их параметрами.
387
Файл читается при парсинге конфигурации и обновляется каждый раз при
388
<link doc="../http/ngx_http_api_module.xml" id="stream_upstreams_stream_upstream_name_servers_">изменении</link>
389
конфигурации группы.
390
Изменение содержимого файла напрямую не рекомендуется.
391
Директиву нельзя использовать
392
совместно с директивой <link id="server"/>.
393
</para>
394
395
<para>
396
<note>
397
Изменения, совершённые в момент
398
<link doc="../control.xml" id="reconfiguration">перезагрузки конфигурации</link>
399
или <link doc="../control.xml" id="upgrade">обновления бинарного файла</link>,
400
могут быть потеряны.
401
</note>
402
</para>
403
404
<para>
405
<note>
406
Эта директива доступна как часть
407
<commercial_version>коммерческой подписки</commercial_version>.
408
</note>
409
</para>
410
411
</directive>
412
413
414
<directive name="hash">
415
<syntax><value>ключ</value> [<literal>consistent</literal>]</syntax>
416
<default/>
417
<context>upstream</context>
418
419
<para>
420
Задаёт метод балансировки нагрузки для группы, при котором
421
соответствие клиента серверу определяется при помощи
422
хэшированного значения <value>ключа</value>.
423
В качестве <value>ключа</value> может использоваться текст, переменные
424
и их комбинации (1.11.2).
425
Пример использования:
426
<example>
427
hash $remote_addr;
428
</example>
429
Следует отметить, что любое добавление или удаление серверов в группе
430
может привести к перераспределению большинства ключей на другие серверы.
431
Метод совместим с библиотекой Perl
432
<link url="https://metacpan.org/pod/Cache::Memcached">Cache::Memcached</link>.
433
</para>
434
435
<para>
436
Если задан параметр <literal>consistent</literal>, то вместо
437
вышеописанного метода будет использоваться метод консистентного хэширования
438
<link url="https://www.metabrew.com/article/libketama-consistent-hashing-algo-memcached-clients">ketama</link>.
439
Метод гарантирует, что при добавлении сервера в группу или его удалении
440
на другие серверы будет перераспределено минимальное число ключей.
441
Применение метода для кэширующих серверов обеспечивает
442
больший процент попаданий в кэш.
443
Метод совместим с библиотекой Perl
444
<link url="https://metacpan.org/pod/Cache::Memcached::Fast">Cache::Memcached::Fast</link>
445
при значении параметра <value>ketama_points</value> равным 160.
446
</para>
447
448
</directive>
449
450
451
<directive name="least_conn">
452
<syntax/>
453
<default/>
454
<context>upstream</context>
455
456
<para>
457
Задаёт для группы метод балансировки нагрузки, при котором соединение
458
передаётся серверу с наименьшим числом активных соединений,
459
с учётом весов серверов.
460
Если подходит сразу несколько серверов, они выбираются циклически
461
(в режиме round-robin) с учётом их весов.
462
</para>
463
464
</directive>
465
466
467
<directive name="least_time">
468
<syntax>
469
<literal>connect</literal> |
470
<literal>first_byte</literal> |
471
<literal>last_byte</literal>
472
[<literal>inflight</literal>]</syntax>
473
<default/>
474
<context>upstream</context>
475
<appeared-in>1.7.11</appeared-in>
476
477
478
<para>
479
Задаёт для группы метод балансировки нагрузки, при котором соединение
480
передаётся серверу с наименьшими средним временем ответа и
481
числом активных соединений с учётом весов серверов.
482
Если подходит сразу несколько серверов, то они выбираются циклически
483
(в режиме round-robin) с учётом их весов.
484
</para>
485
486
<para>
487
Если указан параметр <literal>connect</literal>,
488
то учитывается время
489
<link id="var_upstream_connect_time">соединения</link> с сервером группы.
490
Если указан параметр <literal>first_byte</literal>,
491
то учитывается время получения
492
<link id="var_upstream_first_byte_time">первого байта</link> данных.
493
Если указан параметр <literal>last_byte</literal>,
494
то учитывается время получения
495
<link id="var_upstream_session_time">последнего байта</link> данных.
496
Если указан параметр <literal>inflight</literal> (1.11.6),
497
то также учитываются незавершённые соединения.
498
<note>
499
До версии 1.11.6
500
незавершённые соединения учитывались по умолчанию.
501
</note>
502
</para>
503
504
<para>
505
<note>
506
До версии 1.31.0
507
эта директива была доступна только как часть
508
<commercial_version>коммерческой подписки</commercial_version>.
509
</note>
510
</para>
511
512
</directive>
513
514
515
<directive name="random">
516
<syntax>[<literal>two</literal> [<value>метод</value>]]</syntax>
517
<default/>
518
<context>upstream</context>
519
<appeared-in>1.15.1</appeared-in>
520
521
<para>
522
Задаёт для группы метод балансировки нагрузки, при котором соединение
523
передаётся случайно выбранному серверу, с учётом весов
524
серверов.
525
</para>
526
527
<para>
528
Если указан необязательный параметр <literal>two</literal>,
529
то nginx случайным образом выбирает
530
<link url="https://homes.cs.washington.edu/~karlin/papers/balls.pdf">два</link>
531
сервера, из которых выбирает сервер,
532
используя указанный <literal>метод</literal>.
533
Методом по умолчанию является <literal>least_conn</literal>,
534
при котором соединение передаётся на сервер
535
с наименьшим количеством активных соединений.
536
</para>
537
538
<para id="random_least_time">
539
Если указан метод <literal>least_time</literal>, то соединение передаётся
540
серверу
541
с наименьшими средним временем ответа и числом активных соединений.
542
Если указан <literal>least_time=connect</literal>,
543
то учитывается время
544
<link id="var_upstream_connect_time">соединения</link> с сервером группы.
545
Если указан <literal>least_time=first_byte</literal>,
546
то учитывается время получения
547
<link id="var_upstream_first_byte_time">первого байта</link> данных.
548
Если указан <literal>least_time=last_byte</literal>,
549
то учитывается время получения
550
<link id="var_upstream_session_time">последнего байта</link> данных.
551
<note>
552
Метод <literal>least_time</literal> доступен как часть
553
<commercial_version>коммерческой подписки</commercial_version>.
554
</note>
555
</para>
556
557
</directive>
558
559
560
<directive name="resolver">
561
<syntax>
562
<value>адрес</value> ...
563
[<literal>valid</literal>=<value>время</value>]
564
[<literal>ipv4</literal>=<literal>on</literal>|<literal>off</literal>]
565
[<literal>ipv6</literal>=<literal>on</literal>|<literal>off</literal>]
566
[<literal>status_zone</literal>=<value>зона</value>]</syntax>
567
<default/>
568
<context>upstream</context>
569
<appeared-in>1.27.3</appeared-in>
570
571
<para>
572
Задаёт серверы DNS, используемые для преобразования имён вышестоящих серверов
573
в адреса, например:
574
<example>
575
resolver 127.0.0.1 [::1]:5353;
576
</example>
577
Адрес может быть указан в виде доменного имени или IP-адреса,
578
и необязательного порта.
579
Если порт не указан, используется порт 53.
580
Серверы DNS опрашиваются циклически.
581
</para>
582
583
<para id="resolver_ipv6">
584
По умолчанию nginx будет искать как IPv4-, так и IPv6-адреса
585
при преобразовании имён в адреса.
586
Если поиск IPv4- или IPv6-адресов нежелателен,
587
можно указать параметр <literal>ipv4=off</literal> (1.23.1) или
588
<literal>ipv6=off</literal>.
589
</para>
590
591
<para id="resolver_valid">
592
По умолчанию nginx кэширует ответы, используя значение TTL из ответа.
593
Необязательный параметр <literal>valid</literal> позволяет это
594
переопределить:
595
<example>
596
resolver 127.0.0.1 [::1]:5353 valid=30s;
597
</example>
598
<note>
599
Для предотвращения DNS-спуфинга рекомендуется
600
использовать DNS-серверы в защищённой доверенной локальной сети.
601
</note>
602
</para>
603
604
<para id="resolver_status_zone">
605
Необязательный параметр <literal>status_zone</literal> (1.17.5)
606
включает
607
<link doc="../http/ngx_http_api_module.xml" id="resolvers_">сбор информации</link>
608
о запросах и ответах сервера DNS
609
в указанной <value>зоне</value>.
610
Параметр доступен как часть
611
<commercial_version>коммерческой подписки</commercial_version>.
612
</para>
613
614
<para>
615
<note>
616
Начиная с версии 1.17.5 и до версии 1.27.3
617
эта директива была доступна только как часть
618
<commercial_version>коммерческой подписки</commercial_version>.
619
</note>
620
</para>
621
622
</directive>
623
624
625
<directive name="resolver_timeout">
626
<syntax><value>время</value></syntax>
627
<default>30s</default>
628
<context>upstream</context>
629
<appeared-in>1.27.3</appeared-in>
630
631
<para>
632
Задаёт таймаут для преобразования имени в адрес, например:
633
<example>
634
resolver_timeout 5s;
635
</example>
636
</para>
637
638
<para>
639
<note>
640
Начиная с версии 1.17.5 и до версии 1.27.3
641
эта директива была доступна только как часть
642
<commercial_version>коммерческой подписки</commercial_version>.
643
</note>
644
</para>
645
646
</directive>
647
648
</section>
649
650
651
<section id="variables" name="Встроенные переменные">
652
653
<para>
654
Модуль <literal>ngx_stream_upstream_module</literal>
655
поддерживает следующие встроенные переменные:
656
<list type="tag">
657
658
<tag-name id="var_upstream_addr"><var>$upstream_addr</var></tag-name>
659
<tag-desc>
660
хранит IP-адрес и порт или путь к UNIX-сокету сервера группы (1.11.4).
661
Если при проксировании были сделаны обращения к нескольким серверам,
662
то их адреса разделяются запятой, например
663
<literal>192.168.1.1:12345, 192.168.1.2:12345, unix:/tmp/sock</literal>”.
664
Если сервер не может быть выбран,
665
то переменная хранит имя группы серверов.
666
</tag-desc>
667
668
<tag-name id="var_upstream_bytes_received"><var>$upstream_bytes_received</var></tag-name>
669
<tag-desc>
670
число байт, полученных от сервера группы (1.11.4).
671
Значения нескольких соединений
672
разделяются запятыми подобно адресам в переменной
673
<link id="var_upstream_addr">$upstream_addr</link>.
674
</tag-desc>
675
676
<tag-name id="var_upstream_bytes_sent"><var>$upstream_bytes_sent</var></tag-name>
677
<tag-desc>
678
число байт, переданных на сервер группы (1.11.4).
679
Значения нескольких соединений
680
разделяются запятыми подобно адресам в переменной
681
<link id="var_upstream_addr">$upstream_addr</link>.
682
</tag-desc>
683
684
<tag-name id="var_upstream_connect_time"><var>$upstream_connect_time</var></tag-name>
685
<tag-desc>
686
время установки соединения с сервером группы (1.11.4);
687
время хранится в секундах с точностью до миллисекунд.
688
Времена нескольких соединений
689
разделяются запятыми подобно адресам в переменной
690
<link id="var_upstream_addr">$upstream_addr</link>.
691
</tag-desc>
692
693
<tag-name id="var_upstream_first_byte_time"><var>$upstream_first_byte_time</var></tag-name>
694
<tag-desc>
695
время получения первого байта данных (1.11.4);
696
время хранится в секундах с точностью до миллисекунд.
697
Времена нескольких соединений
698
разделяются запятыми подобно адресам в переменной
699
<link id="var_upstream_addr">$upstream_addr</link>.
700
</tag-desc>
701
702
<tag-name id="var_upstream_last_addr"><var>$upstream_last_addr</var></tag-name>
703
<tag-desc>
704
хранит IP-адрес или путь к UNIX-сокету
705
последнего выбранного сервера группы (1.29.3).
706
707
<para>
708
<note>
709
Эта переменная доступна как часть
710
<commercial_version>коммерческой подписки</commercial_version>.
711
</note>
712
</para>
713
714
</tag-desc>
715
716
<tag-name id="var_upstream_session_time"><var>$upstream_session_time</var></tag-name>
717
<tag-desc>
718
длительность сессии в секундах с точностью до миллисекунд (1.11.4).
719
Времена нескольких соединений
720
разделяются запятыми подобно адресам в переменной
721
<link id="var_upstream_addr">$upstream_addr</link>.
722
</tag-desc>
723
724
</list>
725
</para>
726
727
</section>
728
729
</module>
730
731