Mercurial > hg > nginx-site
annotate xml/ru/docs/http/websocket.xml @ 2769:16f6fa718be2
Updated TLSv1.3 support notes.
Previous notes described some early development snapshot of OpenSSL 1.1.1
with disabled TLSv1.3 by default. It was then enabled in the first alpha.
Further, the updated text covers later major releases such as OpenSSL 3.0.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Thu, 30 Sep 2021 16:29:20 +0300 |
parents | 66a30a380fba |
children | 4add6ae1296f |
rev | line source |
---|---|
849 | 1 <!-- |
2 Copyright (C) Nginx, Inc. | |
3 --> | |
4 | |
5 <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd"> | |
6 | |
7 <article name="Проксирование WebSocket" | |
8 link="/ru/docs/http/websocket.html" | |
9 lang="ru" | |
1923
66a30a380fba
Fixed links to tools.ietf.org.
Ruslan Ermilov <ru@nginx.com>
parents:
1724
diff
changeset
|
10 rev="4"> |
849 | 11 |
12 | |
13 <section> | |
14 | |
15 <para> | |
16 Для превращения соединения между клиентом и сервером из HTTP/1.1 в WebSocket | |
17 используется доступный в HTTP/1.1 механизм | |
1923
66a30a380fba
Fixed links to tools.ietf.org.
Ruslan Ermilov <ru@nginx.com>
parents:
1724
diff
changeset
|
18 <link url="https://tools.ietf.org/html/rfc2616#section-14.42">смены |
849 | 19 протокола</link>. |
20 </para> | |
21 | |
22 <para> | |
23 Но есть сложность: поскольку <header>Upgrade</header> является | |
1923
66a30a380fba
Fixed links to tools.ietf.org.
Ruslan Ermilov <ru@nginx.com>
parents:
1724
diff
changeset
|
24 <link url="https://tools.ietf.org/html/rfc2616#section-13.5.1">hop-by-hop</link> |
849 | 25 заголовком, то он не передаётся от клиента к проксируемому серверу. |
26 При прямом проксировании клиенты могут использовать метод | |
27 <literal>CONNECT</literal>, чтобы обойти эту проблему. | |
28 Однако при обратном проксировании такой подход не работает, | |
29 так как клиент ничего о проксирующем сервере не знает, | |
30 и требуется специальная обработка на проксирующем сервере. | |
31 </para> | |
32 | |
33 <para> | |
1724
ce3e89d13fa0
Removed unneeded comma in "Since ..." Russian constructs.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1536
diff
changeset
|
34 Начиная с версии 1.3.13 |
849 | 35 в nginx предусмотрен особый режим работы, |
36 который позволяет установить туннель между клиентом и проксируемым | |
37 сервером, если проксируемый сервер вернул ответ с кодом | |
38 <http-status code="101" text="Switching Protocols"/>, | |
39 и клиент попросил сменить протокол с помощью заголовка | |
40 <header>Upgrade</header> в запросе. | |
41 </para> | |
42 | |
43 <para> | |
44 Как уже отмечалось выше, hop-by-hop заголовки, включая <header>Upgrade</header> | |
45 и <header>Connection</header>, не передаются от клиента к проксируемому | |
46 серверу, поэтому, для того чтобы проксируемый сервер узнал о | |
47 намерении клиента сменить протокол на WebSocket, эти заголовки следует | |
48 передать явно: | |
49 <programlisting> | |
50 location /chat/ { | |
51 proxy_pass http://backend; | |
52 proxy_http_version 1.1; | |
53 proxy_set_header Upgrade $http_upgrade; | |
54 proxy_set_header Connection "upgrade"; | |
55 } | |
56 </programlisting> | |
57 Более сложный пример, | |
58 в котором значение поля <header>Connection</header> | |
59 в заголовке запроса к проксируемому серверу зависит от наличия поля | |
60 <header>Upgrade</header> в заголовке запроса клиента: | |
61 <programlisting> | |
62 http { | |
63 map $http_upgrade $connection_upgrade { | |
64 default upgrade; | |
65 '' close; | |
66 } | |
67 | |
68 server { | |
69 ... | |
70 | |
71 location /chat/ { | |
72 proxy_pass http://backend; | |
73 proxy_http_version 1.1; | |
74 proxy_set_header Upgrade $http_upgrade; | |
75 proxy_set_header Connection $connection_upgrade; | |
76 } | |
77 } | |
78 </programlisting> | |
79 </para> | |
80 | |
1525
e47758a54759
Updated the "WebSockets Proxying" article with proxy_read_timeout.
Yaroslav Zhuravlev <yar@nginx.com>
parents:
849
diff
changeset
|
81 <para> |
e47758a54759
Updated the "WebSockets Proxying" article with proxy_read_timeout.
Yaroslav Zhuravlev <yar@nginx.com>
parents:
849
diff
changeset
|
82 По умолчанию соединение будет закрыто, |
1536
d1d49bbb3df0
Removed proxy_send_timeout and its example from "WebSockets Proxying" article.
Yaroslav Zhuravlev <yar@nginx.com>
parents:
1525
diff
changeset
|
83 если с проксируемого сервера данные не передавались в течение 60 секунд. |
d1d49bbb3df0
Removed proxy_send_timeout and its example from "WebSockets Proxying" article.
Yaroslav Zhuravlev <yar@nginx.com>
parents:
1525
diff
changeset
|
84 Этот таймаут можно увеличить при помощи директивы |
d1d49bbb3df0
Removed proxy_send_timeout and its example from "WebSockets Proxying" article.
Yaroslav Zhuravlev <yar@nginx.com>
parents:
1525
diff
changeset
|
85 <link doc="ngx_http_proxy_module.xml" id="proxy_read_timeout"/>. |
d1d49bbb3df0
Removed proxy_send_timeout and its example from "WebSockets Proxying" article.
Yaroslav Zhuravlev <yar@nginx.com>
parents:
1525
diff
changeset
|
86 Кроме того, на проксируемом сервере можно настроить |
d1d49bbb3df0
Removed proxy_send_timeout and its example from "WebSockets Proxying" article.
Yaroslav Zhuravlev <yar@nginx.com>
parents:
1525
diff
changeset
|
87 периодическую отправку WebSocket ping-фреймов для сброса таймаута |
d1d49bbb3df0
Removed proxy_send_timeout and its example from "WebSockets Proxying" article.
Yaroslav Zhuravlev <yar@nginx.com>
parents:
1525
diff
changeset
|
88 и проверки работоспособности соединения. |
1525
e47758a54759
Updated the "WebSockets Proxying" article with proxy_read_timeout.
Yaroslav Zhuravlev <yar@nginx.com>
parents:
849
diff
changeset
|
89 </para> |
e47758a54759
Updated the "WebSockets Proxying" article with proxy_read_timeout.
Yaroslav Zhuravlev <yar@nginx.com>
parents:
849
diff
changeset
|
90 |
849 | 91 </section> |
92 | |
93 </article> |