Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/ru/docs/http/ngx_http_grpc_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_grpc_module"
11
link="/ru/docs/http/ngx_http_grpc_module.html"
12
lang="ru"
13
rev="18">
14
15
<section id="summary">
16
17
<para>
18
Модуль <literal>ngx_http_grpc_module</literal> позволяет передавать запросы
19
gRPC-серверу (1.13.10).
20
Для работы этого модуля необходим
21
модуль <link doc="ngx_http_v2_module.xml">ngx_http_v2_module</link>.
22
</para>
23
24
</section>
25
26
27
<section id="example" name="Пример конфигурации">
28
29
<para>
30
<example>
31
server {
32
listen 9000;
33
34
http2 on;
35
36
location / {
37
grpc_pass 127.0.0.1:9000;
38
}
39
}
40
</example>
41
</para>
42
43
</section>
44
45
46
<section id="directives" name="Директивы">
47
48
<directive name="grpc_allow_upstream">
49
<syntax><value>строка</value> ...</syntax>
50
<default/>
51
<context>http</context>
52
<context>server</context>
53
<context>location</context>
54
<appeared-in>1.29.3</appeared-in>
55
56
<para>
57
Задаёт условия, при которых доступ к gRPC-серверу
58
будет разрешён или <link id="denied">запрещён</link>.
59
Если все значения строковых параметров непустые
60
и не равны “0”, то доступ разрешён.
61
Условия проверяются каждый раз
62
перед установлением соединения с gRPC-сервером.
63
В значении параметров допустимо использование переменных:
64
<example>
65
geo $upstream_last_addr $allow {
66
volatile;
67
10.10.0.0/24 1;
68
}
69
70
server {
71
listen 127.0.0.1:8080;
72
http2 on;
73
74
location / {
75
grpc_pass localhost:9000;
76
grpc_allow_upstream $allow;
77
...
78
}
79
}
80
</example>
81
</para>
82
83
<para>
84
<note>
85
Директива доступна как часть
86
<commercial_version>коммерческой подписки</commercial_version>.
87
</note>
88
</para>
89
90
</directive>
91
92
93
<directive name="grpc_bind">
94
<syntax>
95
<value>адрес</value>
96
[<literal>transparent </literal>] |
97
<literal>off</literal></syntax>
98
<default/>
99
<context>http</context>
100
<context>server</context>
101
<context>location</context>
102
103
<para>
104
Задаёт локальный IP-адрес с необязательным портом,
105
который будет использоваться в исходящих соединениях с gRPC-сервером.
106
В значении параметра допустимо использование переменных.
107
Специальное значение <literal>off</literal> отменяет действие
108
унаследованной с предыдущего уровня конфигурации
109
директивы <literal>grpc_bind</literal>, позволяя системе
110
самостоятельно выбирать локальный IP-адрес и порт.
111
</para>
112
113
<para id="grpc_bind_transparent">
114
Параметр <literal>transparent</literal> позволяет
115
задать нелокальный IP-aдрес, который будет использоваться в
116
исходящих соединениях с gRPC-сервером,
117
например, реальный IP-адрес клиента:
118
<example>
119
grpc_bind $remote_addr transparent;
120
</example>
121
Для работы параметра
122
обычно требуется
123
запустить рабочие процессы nginx с привилегиями
124
<link doc="../ngx_core_module.xml" id="user">суперпользователя</link>.
125
В Linux этого не требуется, так как если
126
указан параметр <literal>transparent</literal>, то рабочие процессы
127
наследуют capability <literal>CAP_NET_RAW</literal> из главного процесса.
128
Также необходимо настроить таблицу маршрутизации ядра
129
для перехвата сетевого трафика с gRPC-сервера.
130
</para>
131
132
</directive>
133
134
135
<directive name="grpc_bind_dynamic">
136
<syntax><literal>on</literal> | <literal>off</literal></syntax>
137
<default>off</default>
138
<context>http</context>
139
<context>server</context>
140
<context>location</context>
141
<appeared-in>1.29.3</appeared-in>
142
143
<para>
144
Если включено, операция <link id="grpc_bind">bind</link> осуществляется
145
при каждой попытке соединения.
146
</para>
147
148
<para>
149
<note>
150
Директива доступна как часть
151
<commercial_version>коммерческой подписки</commercial_version>.
152
</note>
153
</para>
154
155
</directive>
156
157
158
<directive name="grpc_buffer_size">
159
<syntax><value>размер</value></syntax>
160
<default>4k|8k</default>
161
<context>http</context>
162
<context>server</context>
163
<context>location</context>
164
165
<para>
166
Задаёт <value>размер</value> буфера, в который будет читаться ответ,
167
получаемый от gRPC-сервера.
168
В первой части ответа находится, как правило, небольшой заголовок;
169
если его размер больше заданного, то такой ответ считается
170
<link id="invalid_header">неверным</link>.
171
Ответ синхронно передаётся клиенту сразу же по мере его поступления.
172
По умолчанию размер одного буфера равен размеру страницы памяти.
173
В зависимости от платформы это или 4K, или 8K,
174
однако его можно сделать меньше.
175
</para>
176
177
</directive>
178
179
180
<directive name="grpc_connect_timeout">
181
<syntax><value>время</value></syntax>
182
<default>60s</default>
183
<context>http</context>
184
<context>server</context>
185
<context>location</context>
186
187
<para>
188
Задаёт таймаут для установления соединения с gRPC-сервером.
189
Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд.
190
</para>
191
192
</directive>
193
194
195
<directive name="grpc_hide_header">
196
<syntax><value>поле</value></syntax>
197
<default/>
198
<context>http</context>
199
<context>server</context>
200
<context>location</context>
201
202
<para>
203
По умолчанию
204
nginx не передаёт клиенту поля заголовка <header>Date</header>,
205
<header>Server</header> и
206
<header>X-Accel-...</header> из ответа gRPC-сервера.
207
Директива <literal>grpc_hide_header</literal> задаёт дополнительные поля,
208
которые не будут передаваться.
209
Если же передачу полей нужно разрешить, можно воспользоваться
210
директивой <link id="grpc_pass_header"/>.
211
</para>
212
213
</directive>
214
215
216
<directive name="grpc_ignore_headers">
217
<syntax><value>поле</value> ...</syntax>
218
<default/>
219
<context>http</context>
220
<context>server</context>
221
<context>location</context>
222
223
<para>
224
Запрещает обработку некоторых полей заголовка из ответа gRPC-сервера.
225
В директиве можно указать поля <header>X-Accel-Redirect</header>
226
и <header>X-Accel-Charset</header>.
227
</para>
228
229
<para>
230
Если не запрещено, обработка этих полей заголовка заключается в следующем:
231
<list type="bullet" compact="no">
232
233
<listitem>
234
<header>X-Accel-Redirect</header> производит
235
<link doc="ngx_http_core_module.xml" id="internal">внутреннее
236
перенаправление</link> на указанный URI;
237
</listitem>
238
239
<listitem>
240
<header>X-Accel-Charset</header> задаёт желаемую
241
<link doc="ngx_http_charset_module.xml" id="charset">кодировку</link>
242
ответа.
243
</listitem>
244
245
</list>
246
</para>
247
248
</directive>
249
250
251
<directive name="grpc_intercept_errors">
252
<syntax><literal>on</literal> | <literal>off</literal></syntax>
253
<default>off</default>
254
<context>http</context>
255
<context>server</context>
256
<context>location</context>
257
258
<para>
259
Определяет, передавать ли клиенту ответы gRPC-сервера с кодом
260
больше либо равным 300,
261
или же перехватывать их и перенаправлять на обработку nginx’у с помощью
262
директивы <link doc="ngx_http_core_module.xml" id="error_page"/>.
263
</para>
264
265
</directive>
266
267
268
<directive name="grpc_next_upstream">
269
<syntax>
270
<literal>error</literal> |
271
<literal>timeout</literal> |
272
<literal>denied</literal> |
273
<literal>invalid_header</literal> |
274
<literal>http_500</literal> |
275
<literal>http_502</literal> |
276
<literal>http_503</literal> |
277
<literal>http_504</literal> |
278
<literal>http_403</literal> |
279
<literal>http_404</literal> |
280
<literal>http_429</literal> |
281
<literal>non_idempotent</literal> |
282
<literal>off</literal>
283
...</syntax>
284
<default>error timeout</default>
285
<context>http</context>
286
<context>server</context>
287
<context>location</context>
288
289
<para>
290
Определяет, в каких случаях запрос будет передан следующему серверу:
291
<list type="tag">
292
293
<tag-name><literal>error</literal></tag-name>
294
<tag-desc>произошла ошибка соединения с сервером, передачи ему запроса или
295
чтения заголовка ответа сервера;</tag-desc>
296
297
<tag-name><literal>timeout</literal></tag-name>
298
<tag-desc>произошёл таймаут во время соединения с сервером,
299
передачи ему запроса или чтения заголовка ответа сервера;</tag-desc>
300
301
<tag-name id="denied"><literal>denied</literal></tag-name>
302
<tag-desc>сервер <link id="proxy_allow_upstream">отклонил</link>
303
соединение (1.29.3);
304
<para>
305
<note>
306
Параметр доступен как часть
307
<commercial_version>коммерческой подписки</commercial_version>.
308
</note>
309
</para>
310
</tag-desc>
311
312
<tag-name id="invalid_header"><literal>invalid_header</literal></tag-name>
313
<tag-desc>сервер вернул пустой или неверный ответ;</tag-desc>
314
315
<tag-name><literal>http_500</literal></tag-name>
316
<tag-desc>сервер вернул ответ с кодом 500;</tag-desc>
317
318
<tag-name><literal>http_502</literal></tag-name>
319
<tag-desc>сервер вернул ответ с кодом 502;</tag-desc>
320
321
<tag-name><literal>http_503</literal></tag-name>
322
<tag-desc>сервер вернул ответ с кодом 503;</tag-desc>
323
324
<tag-name><literal>http_504</literal></tag-name>
325
<tag-desc>сервер вернул ответ с кодом 504;</tag-desc>
326
327
<tag-name><literal>http_403</literal></tag-name>
328
<tag-desc>сервер вернул ответ с кодом 403;</tag-desc>
329
330
<tag-name><literal>http_404</literal></tag-name>
331
<tag-desc>сервер вернул ответ с кодом 404;</tag-desc>
332
333
<tag-name><literal>http_429</literal></tag-name>
334
<tag-desc>сервер вернул ответ с кодом 429;</tag-desc>
335
336
<tag-name id="non_idempotent"><literal>non_idempotent</literal></tag-name>
337
<tag-desc>обычно запросы с
338
<link url="https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2">неидемпотентным</link>
339
методом
340
(<literal>POST</literal>, <literal>LOCK</literal>, <literal>PATCH</literal>)
341
не передаются на другой сервер,
342
если запрос серверу группы уже был отправлен;
343
включение параметра явно разрешает повторять подобные запросы;
344
</tag-desc>
345
346
347
<tag-name><literal>off</literal></tag-name>
348
<tag-desc>запрещает передачу запроса следующему серверу.</tag-desc>
349
350
</list>
351
</para>
352
353
<para>
354
Необходимо понимать, что передача запроса следующему серверу возможна
355
только при условии, что клиенту ещё ничего не передавалось.
356
То есть, если ошибка или таймаут возникли в середине передачи ответа,
357
то исправить это уже невозможно.
358
</para>
359
360
<para>
361
Директива также определяет, что считается
362
<link doc="ngx_http_upstream_module.xml" id="max_fails">неудачной
363
попыткой</link> работы с сервером.
364
Случаи <literal>error</literal>, <literal>timeout</literal>,
365
<literal>denied</literal> и
366
<literal>invalid_header</literal>
367
всегда считаются неудачными попытками, даже если они не указаны в директиве.
368
Случаи <literal>http_500</literal>, <literal>http_502</literal>,
369
<literal>http_503</literal>, <literal>http_504</literal>
370
и <literal>http_429</literal>
371
считаются неудачными попытками, только если они указаны в директиве.
372
Случаи <literal>http_403</literal> и <literal>http_404</literal>
373
никогда не считаются неудачными попытками.
374
</para>
375
376
<para>
377
Передача запроса следующему серверу может быть ограничена по
378
<link id="grpc_next_upstream_tries">количеству попыток</link>
379
и по <link id="grpc_next_upstream_timeout">времени</link>.
380
</para>
381
382
</directive>
383
384
385
<directive name="grpc_next_upstream_timeout">
386
<syntax><value>время</value></syntax>
387
<default>0</default>
388
<context>http</context>
389
<context>server</context>
390
<context>location</context>
391
392
<para>
393
Ограничивает время, в течение которого возможна передача запроса
394
<link id="grpc_next_upstream">следующему серверу</link>.
395
Значение <literal>0</literal> отключает это ограничение.
396
</para>
397
398
</directive>
399
400
401
<directive name="grpc_next_upstream_tries">
402
<syntax><value>число</value></syntax>
403
<default>0</default>
404
<context>http</context>
405
<context>server</context>
406
<context>location</context>
407
408
<para>
409
Ограничивает число допустимых попыток для передачи запроса
410
<link id="grpc_next_upstream">следующему серверу</link>.
411
Значение <literal>0</literal> отключает это ограничение.
412
</para>
413
414
</directive>
415
416
417
<directive name="grpc_pass">
418
<syntax><value>адрес</value></syntax>
419
<default/>
420
<context>location</context>
421
<context>if в location</context>
422
423
<para>
424
Задаёт адрес gRPC-сервера.
425
Адрес может быть указан в виде доменного имени или IP-адреса,
426
и порта:
427
<example>
428
grpc_pass localhost:9000;
429
</example>
430
или в виде пути UNIX-сокета:
431
<example>
432
grpc_pass unix:/tmp/grpc.socket;
433
</example>
434
Также может использоваться схема “<literal>grpc://</literal>”:
435
<example>
436
grpc_pass grpc://127.0.0.1:9000;
437
</example>
438
Для использования gRPC по SSL необходимо использовать схему
439
<literal>grpcs://</literal>”:
440
<example>
441
grpc_pass grpcs://127.0.0.1:443;
442
</example>
443
</para>
444
445
<para>
446
Если доменному имени соответствует несколько адресов, то все они будут
447
использоваться по очереди (round-robin).
448
И, кроме того, адрес может быть
449
<link doc="ngx_http_upstream_module.xml">группой серверов</link>.
450
</para>
451
452
<para>
453
В значении параметра можно использовать переменные (1.17.8).
454
В этом случае, если адрес указан в виде доменного имени,
455
имя ищется среди описанных
456
<link doc="ngx_http_upstream_module.xml">групп серверов</link>
457
и если не найдено, то определяется с помощью
458
<link doc="ngx_http_core_module.xml" id="resolver"/>’а.
459
</para>
460
461
<para>
462
<note>
463
Заголовки в конце ответа, полученные от
464
вышестоящего сервера, передаются клиенту как есть, без интерпретации.
465
</note>
466
</para>
467
468
</directive>
469
470
471
<directive name="grpc_pass_header">
472
<syntax><value>поле</value></syntax>
473
<default/>
474
<context>http</context>
475
<context>server</context>
476
<context>location</context>
477
478
<para>
479
Разрешает передавать от gRPC-сервера клиенту
480
<link id="grpc_hide_header">запрещённые для передачи</link> поля заголовка.
481
</para>
482
483
</directive>
484
485
486
<directive name="grpc_read_timeout">
487
<syntax><value>время</value></syntax>
488
<default>60s</default>
489
<context>http</context>
490
<context>server</context>
491
<context>location</context>
492
493
<para>
494
Задаёт таймаут при чтении ответа gRPC-сервера.
495
Таймаут устанавливается не на всю передачу ответа,
496
а только между двумя операциями чтения.
497
Если по истечении этого времени gRPC-сервер ничего не передаст,
498
соединение закрывается.
499
</para>
500
501
</directive>
502
503
504
<directive name="grpc_request_dynamic">
505
<syntax><literal>on</literal> | <literal>off</literal></syntax>
506
<default>off</default>
507
<context>http</context>
508
<context>server</context>
509
<context>location</context>
510
<appeared-in>1.29.3</appeared-in>
511
512
<para>
513
Разрешает или запрещает создание отдельного экземпляра запроса
514
для каждого gRPC-сервера.
515
По умолчанию для всех gRPC-серверов используется единый запрос.
516
Если разрешено, то для каждого сервера создаётся отдельный экземпляр запроса,
517
что позволяет кастомизировать запрос для конкретного сервера.
518
Например каждому серверу можно назначить своё значение
519
поля <header>Host</header> в заголовке запроса:
520
<example>
521
grpc_request_dynamic on;
522
grpc_set_header Host $upstream_last_server_name;
523
</example>
524
</para>
525
526
<para>
527
<note>
528
Директива доступна как часть
529
<commercial_version>коммерческой подписки</commercial_version>.
530
</note>
531
</para>
532
533
</directive>
534
535
536
<directive name="grpc_send_timeout">
537
<syntax><value>время</value></syntax>
538
<default>60s</default>
539
<context>http</context>
540
<context>server</context>
541
<context>location</context>
542
543
<para>
544
Задаёт таймаут при передаче запроса gRPC-серверу.
545
Таймаут устанавливается не на всю передачу запроса,
546
а только между двумя операциями записи.
547
Если по истечении этого времени gRPC-сервер не примет новых данных,
548
соединение закрывается.
549
</para>
550
551
</directive>
552
553
554
<directive name="grpc_set_header">
555
<syntax><value>поле</value> <value>значение</value></syntax>
556
<default>Content-Length $content_length</default>
557
<context>http</context>
558
<context>server</context>
559
<context>location</context>
560
561
<para>
562
Позволяет переопределять или добавлять поля заголовка запроса,
563
<link id="proxy_pass_request_headers">передаваемые</link> gRPC-серверу.
564
В качестве значения можно использовать текст, переменные и их комбинации.
565
Директивы наследуются с предыдущего уровня конфигурации при условии, что
566
на данном уровне не описаны свои директивы <literal>grpc_set_header</literal>.
567
</para>
568
569
<para>
570
Если значение поля заголовка — пустая строка, то поле вообще
571
не будет передаваться gRPC-серверу:
572
<example>
573
grpc_set_header Accept-Encoding "";
574
</example>
575
</para>
576
577
</directive>
578
579
580
<directive name="grpc_socket_keepalive">
581
<syntax><literal>on</literal> | <literal>off</literal></syntax>
582
<default>off</default>
583
<context>http</context>
584
<context>server</context>
585
<context>location</context>
586
<appeared-in>1.15.6</appeared-in>
587
588
<para>
589
Конфигурирует поведение “TCP keepalive”
590
для исходящих соединений к gRPC-серверу.
591
По умолчанию для сокета действуют настройки операционной системы.
592
Если указано значение “<literal>on</literal>”, то
593
для сокета включается параметр <c-def>SO_KEEPALIVE</c-def>.
594
</para>
595
596
</directive>
597
598
599
<directive name="grpc_ssl_certificate">
600
<syntax><value>файл</value></syntax>
601
<default/>
602
<context>http</context>
603
<context>server</context>
604
<context>location</context>
605
606
<para>
607
Задаёт <value>файл</value> с сертификатом в формате PEM
608
для аутентификации на gRPC SSL-сервере.
609
</para>
610
611
<para id="grpc_ssl_certificate_variables">
612
Начиная с версии 1.21.0 в имени файла можно использовать переменные.
613
</para>
614
615
</directive>
616
617
618
<directive name="grpc_ssl_certificate_cache">
619
<syntax><literal>off</literal></syntax>
620
<syntax>
621
<literal>max</literal>=<value>N</value>
622
[<literal>inactive</literal>=<value>время</value>]
623
[<literal>valid</literal>=<value>время</value>]</syntax>
624
<default>off</default>
625
<context>http</context>
626
<context>server</context>
627
<context>location</context>
628
<appeared-in>1.27.4</appeared-in>
629
630
<para>
631
Задаёт кэш, в котором могут храниться
632
<link id="grpc_ssl_certificate">SSL-сертификаты</link> и
633
<link id="grpc_ssl_certificate_key">секретные ключи</link>,
634
полученные из <link id="grpc_ssl_certificate_key_variables">переменных</link>.
635
</para>
636
637
<para>
638
У директивы есть следующие параметры:
639
<list type="tag">
640
641
<tag-name id="grpc_ssl_certificate_cache_max">
642
<literal>max</literal>
643
</tag-name>
644
<tag-desc>
645
задаёт максимальное число элементов в кэше;
646
при переполнении кэша удаляются наименее востребованные элементы (LRU);
647
</tag-desc>
648
649
<tag-name id="grpc_ssl_certificate_cache_inactive">
650
<literal>inactive</literal>
651
</tag-name>
652
<tag-desc>
653
задаёт время, после которого элемент кэша удаляется,
654
если к нему не было обращений в течение этого времени;
655
по умолчанию 10 секунд;
656
</tag-desc>
657
658
<tag-name id="grpc_ssl_certificate_cache_valid">
659
<literal>valid</literal>
660
</tag-name>
661
<tag-desc>
662
задает время, в течение которого
663
элемент кэша считается действительным
664
и может быть повторно использован,
665
по умолчанию 60 секунд.
666
По завершении этого времени сертификат будет обновлён или повторно проверен;
667
</tag-desc>
668
669
<tag-name id="grpc_ssl_certificate_cache_off">
670
<literal>off</literal>
671
</tag-name>
672
<tag-desc>
673
запрещает кэш.
674
</tag-desc>
675
676
</list>
677
</para>
678
679
<para>
680
Пример:
681
<example>
682
grpc_ssl_certificate $grpc_ssl_server_name.crt;
683
grpc_ssl_certificate_key $grpc_ssl_server_name.key;
684
grpc_ssl_certificate_cache max=1000 inactive=20s valid=1m;
685
</example>
686
</para>
687
688
</directive>
689
690
691
<directive name="grpc_ssl_certificate_key">
692
<syntax><value>файл</value></syntax>
693
<default/>
694
<context>http</context>
695
<context>server</context>
696
<context>location</context>
697
698
<para>
699
Задаёт <value>файл</value> с секретным ключом в формате PEM
700
для аутентификации на gRPC SSL-сервере.
701
</para>
702
703
<para>
704
Вместо <value>файла</value> можно указать значение
705
<literal>engine</literal>:<value>имя</value>:<value>id</value>,
706
которое загружает ключ с указанным <value>id</value>
707
из OpenSSL engine с заданным <value>именем</value>.
708
</para>
709
710
<para>
711
Вместо <value>файла</value> можно указать значение
712
<literal>store</literal>:<value>схема</value>:<value>id</value> (1.29.0),
713
которое используется для загрузки ключа с указанным <value>id</value>
714
и зарегистрированной провайдером OpenSSL <value>схемой</value> URI, такой как
715
<link url="https://datatracker.ietf.org/doc/html/rfc7512"><literal>pkcs11</literal></link>.
716
</para>
717
718
<para id="grpc_ssl_certificate_key_variables">
719
Начиная с версии 1.21.0 в имени файла можно использовать переменные.
720
</para>
721
722
</directive>
723
724
725
<directive name="grpc_ssl_ciphers">
726
<syntax><value>шифры</value></syntax>
727
<default>DEFAULT</default>
728
<context>http</context>
729
<context>server</context>
730
<context>location</context>
731
732
<para>
733
Описывает разрешённые шифры для запросов к gRPC SSL-серверу.
734
Шифры задаются в формате, поддерживаемом библиотекой OpenSSL.
735
</para>
736
737
<para>
738
Полный список можно посмотреть с помощью команды
739
<command>openssl ciphers</command>”.
740
</para>
741
742
</directive>
743
744
745
<directive name="grpc_ssl_conf_command">
746
<syntax><value>имя</value> <value>значение</value></syntax>
747
<default/>
748
<context>http</context>
749
<context>server</context>
750
<context>location</context>
751
<appeared-in>1.19.4</appeared-in>
752
753
<para>
754
Задаёт произвольные конфигурационные
755
<link url="https://www.openssl.org/docs/man1.1.1/man3/SSL_CONF_cmd.html">команды</link>
756
OpenSSL
757
при установлении соединения с gRPC SSL-сервером.
758
<note>
759
Директива поддерживается при использовании OpenSSL 1.0.2 и выше.
760
</note>
761
</para>
762
763
<para>
764
На одном уровне может быть указано
765
несколько директив <literal>grpc_ssl_conf_command</literal>.
766
Директивы наследуются с предыдущего уровня конфигурации при условии, что
767
на данном уровне не описаны
768
свои директивы <literal>grpc_ssl_conf_command</literal>.
769
</para>
770
771
<para>
772
<note>
773
Следует учитывать, что изменение настроек OpenSSL напрямую
774
может привести к неожиданному поведению.
775
</note>
776
</para>
777
778
</directive>
779
780
781
<directive name="grpc_ssl_crl">
782
<syntax><value>файл</value></syntax>
783
<default/>
784
<context>http</context>
785
<context>server</context>
786
<context>location</context>
787
788
<para>
789
Указывает <value>файл</value> с отозванными сертификатами (CRL)
790
в формате PEM, используемыми при <link id="proxy_ssl_verify">проверке</link>
791
сертификата gRPC SSL-сервера.
792
Если используются промежуточные сертификаты,
793
их списки CRL должны находиться в этом же файле.
794
</para>
795
796
</directive>
797
798
799
<directive name="grpc_ssl_key_log">
800
<syntax>путь</syntax>
801
<default/>
802
<context>http</context>
803
<context>server</context>
804
<context>location</context>
805
<appeared-in>1.27.2</appeared-in>
806
807
<para>
808
Включает логирование SSL-ключей соединений с gRPC SSL-сервером
809
и указывает путь к лог-файлу ключей.
810
Ключи записываются в формате
811
<link url="https://datatracker.ietf.org/doc/html/draft-ietf-tls-keylogfile">SSLKEYLOGFILE</link>
812
совместимом с Wireshark.
813
</para>
814
815
<para>
816
<note>
817
Директива доступна как часть
818
<commercial_version>коммерческой подписки</commercial_version>.
819
</note>
820
</para>
821
822
</directive>
823
824
825
<directive name="grpc_ssl_name">
826
<syntax><value>имя</value></syntax>
827
<default>имя хоста из grpc_pass</default>
828
<context>http</context>
829
<context>server</context>
830
<context>location</context>
831
832
<para>
833
Позволяет переопределить имя сервера, используемое при
834
<link id="grpc_ssl_verify">проверке</link>
835
сертификата gRPC SSL-сервера, а также для
836
<link id="grpc_ssl_server_name">передачи его через SNI</link>
837
при установлении соединения с gRPC SSL-сервером.
838
</para>
839
840
<para>
841
По умолчанию используется имя хоста из <link id="grpc_pass"/>.
842
</para>
843
844
</directive>
845
846
847
<directive name="grpc_ssl_password_file">
848
<syntax><value>файл</value></syntax>
849
<default/>
850
<context>http</context>
851
<context>server</context>
852
<context>location</context>
853
854
<para>
855
Задаёт <value>файл</value> с паролями от
856
<link id="grpc_ssl_certificate_key">секретных ключей</link>,
857
где каждый пароль указан на отдельной строке.
858
Пароли применяются по очереди в момент загрузки ключа.
859
</para>
860
861
</directive>
862
863
864
<directive name="grpc_ssl_protocols">
865
<syntax>
866
[<literal>SSLv2</literal>]
867
[<literal>SSLv3</literal>]
868
[<literal>TLSv1</literal>]
869
[<literal>TLSv1.1</literal>]
870
[<literal>TLSv1.2</literal>]
871
[<literal>TLSv1.3</literal>]</syntax>
872
<default>TLSv1.2 TLSv1.3</default>
873
<context>http</context>
874
<context>server</context>
875
<context>location</context>
876
877
<para>
878
Разрешает указанные протоколы для запросов к gRPC SSL-серверу.
879
</para>
880
881
<para>
882
<note>
883
Параметр <literal>TLSv1.3</literal> используется по умолчанию
884
начиная с 1.23.4.
885
</note>
886
</para>
887
888
</directive>
889
890
891
<directive name="grpc_ssl_server_name">
892
<syntax><literal>on</literal> | <literal>off</literal></syntax>
893
<default>off</default>
894
<context>http</context>
895
<context>server</context>
896
<context>location</context>
897
898
<para>
899
Разрешает или запрещает передачу имени сервера через
900
<link url="http://en.wikipedia.org/wiki/Server_Name_Indication">расширение
901
Server Name Indication протокола TLS</link> (SNI, RFC 6066)
902
при установлении соединения с gRPC SSL-сервером.
903
</para>
904
905
</directive>
906
907
908
<directive name="grpc_ssl_session_reuse">
909
<syntax><literal>on</literal> | <literal>off</literal></syntax>
910
<default>on</default>
911
<context>http</context>
912
<context>server</context>
913
<context>location</context>
914
915
<para>
916
Определяет, использовать ли повторно SSL-сессии при
917
работе с gRPC-сервером.
918
Если в логах появляются ошибки
919
<literal>digest check failed</literal>”,
920
то можно попробовать выключить
921
повторное использование сессий.
922
</para>
923
924
</directive>
925
926
927
<directive name="grpc_ssl_trusted_certificate">
928
<syntax><value>файл</value></syntax>
929
<default/>
930
<context>http</context>
931
<context>server</context>
932
<context>location</context>
933
934
<para>
935
Задаёт <value>файл</value> с доверенными сертификатами CA в формате PEM,
936
используемыми при <link id="grpc_ssl_verify">проверке</link>
937
сертификата gRPC SSL-сервера.
938
</para>
939
940
</directive>
941
942
943
<directive name="grpc_ssl_verify">
944
<syntax><literal>on</literal> | <literal>off</literal></syntax>
945
<default>off</default>
946
<context>http</context>
947
<context>server</context>
948
<context>location</context>
949
950
<para>
951
Разрешает или запрещает проверку сертификата gRPC SSL-сервера.
952
</para>
953
954
</directive>
955
956
957
<directive name="grpc_ssl_verify_depth">
958
<syntax><value>число</value></syntax>
959
<default>1</default>
960
<context>http</context>
961
<context>server</context>
962
<context>location</context>
963
964
<para>
965
Устанавливает глубину проверки в цепочке сертификатов
966
gRPC SSL-сервера.
967
</para>
968
969
</directive>
970
971
</section>
972
973
</module>
974
975