关于 nginx 长连接的问题

2021 年 4 月 7 日
 simple2025

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

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

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

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

感觉我 nginx 好多不会呀

3559 次点击
所在节点    Python
11 条回复
ericls
2021 年 4 月 7 日
在 nginx 那一层应该是复用的 你试试就知道了

实际上一个 tcp 经过那么多个 hop 实际情况很难控制
opengps
2021 年 4 月 7 日
应该仅仅是外层 client -> nginx 是长连接复用,内部 nginx->server 依然是有请求就单独转发一次
iConnect
2021 年 4 月 7 日
客户端你是用 websocket 吗?
iyaozhen
2021 年 4 月 7 日
那么 整个请求时长链接的吗?
显然不是啊

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 年 4 月 7 日
HTTP keepalive 还是 TCP keepalive 这是两种不同的概念,TCP keepalive 没认真了解过。

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

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

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

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

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

© 2021 V2EX