关于 nginx 长连接的问题

2021-04-07 12:15:16 +08:00
 chenqh

如果 client -> nginx 配置成长连接, keep-alive

nginx->server 不配置成长链接,

那么 整个请求时长链接的吗?

因为 tornado 好像是不支持长连接的

感觉我 nginx 好多不会呀

2728 次点击
所在节点    Python
11 条回复
ericls
2021-04-07 12:33:27 +08:00
在 nginx 那一层应该是复用的 你试试就知道了

实际上一个 tcp 经过那么多个 hop 实际情况很难控制
opengps
2021-04-07 12:46:11 +08:00
应该仅仅是外层 client -> nginx 是长连接复用,内部 nginx->server 依然是有请求就单独转发一次
iConnect
2021-04-07 13:11:32 +08:00
客户端你是用 websocket 吗?
iyaozhen
2021-04-07 13:47:56 +08:00
那么 整个请求时长链接的吗?
显然不是啊

tornado 我看默认就支持呀
https://www.tornadoweb.org/en/stable/httpserver.html?highlight=keep%20alive#http-server

nginx 需要这样配置:
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive
ChoateYao
2021-04-07 13:58:50 +08:00
HTTP keepalive 还是 TCP keepalive 这是两种不同的概念,TCP keepalive 没认真了解过。

但是 HTTP keepalive 是指复用 TCP 连接,当客户端跟服务端建立起 TCP 通道之后,请求出第一个 HTTP,如果 HTTP 没有指明 keepalive,则得到响应之后服务端会马上把 TCP 断开;否则可以复用 TCP 通道,无需创建多个 TCP 通道,这样子就能避免在一定时间内发起 HTTP 请求,因为创建多个 TCP 通道导致性能性能损耗。
wakzz
2021-04-07 14:00:36 +08:00
nginx -> server 默认的 http 负载均衡是 TCP 短连接,需要一些额外的配置才能设置成 HTTP 长连接。
chenqh
2021-04-07 14:13:33 +08:00
@iyaozhen 记错了,是 tornado 自带的 simple_httpclient 不支持长连接
chenqh
2021-04-07 14:14:11 +08:00
@wakzz 但是我现在 client->nginx 都是短链接了,我现在想要 client->nginx 是长连接
wakzz
2021-04-07 15:18:12 +08:00
@chenqh 四楼的第二个链接就是文档,修改方式就是 upstream 添加 keepalive,以及 location 添加 proxy_http_version 1.1 和 proxy_set_header Connection ""就行。注意是这几个同时配置后才起效,缺一个都不行。
holinhot
2021-04-07 19:41:54 +08:00
题主说的回源长连接
abccccabc
2021-04-08 09:43:24 +08:00
楼主,9 楼的方法可行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/768667

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX