• 请不要在回答技术问题时复制粘贴 AI 生成的内容
KalaSearch
V2EX  ›  程序员

写了篇文章 - 高性能 Nginx HTTPS 调优 如何为 HTTPS 提速 30%

  •  6
     
  •   KalaSearch · Dec 23, 2020 · 11309 views
    This topic created in 2147 days ago, the information mentioned may be changed or developed.

    Nginx 应该是应用最广泛的服务器之一了,不管是反代还是负载均衡都有它的身影。

    我们也一直用 Nginx 来作反向代理,同时完成一些简单的安全和负责 HTTPS 之类的任务。前段时间有用户提到苹果设备( iOS Safari )上搜索请求慢,因此进入了踩坑之旅。

    Nginx 的可配置参数可谓眼花缭乱,而 HTTPS 的配置更需要了解一些底层原理才能知其所以然。

    而我们之前在调整一些配置其实没有完全吃透,几乎是看着 stackoverflow 找了个模板来调整。

    所以索性这次读了 High Performance Web Browser,同时跟一位有经验的同事一起,把 Nginx 重新调整了一遍,把首次请求的延迟降低了 30% 左右。当然这个数字会随着你的业务和请求数据而变化,但是如果是网站的话,很可能提升会更大

    在改配置的时候我配合着 HPBN 做了详细的笔记,顺便整理了出来,写成了这篇文章,希望大家喜欢。

    全文请戳 => 高性能 Nginx HTTPS 调优

    同时对应的配置也放到了 Github 上,欢迎参考使用 => 高性能 Nginx HTTPS 调优对应配置

    图是用 Canva 做的,欢迎随意盗图 :D

    Nginx HTTPS 调优

    Supplement 1  ·  Dec 23, 2020

    如果感兴趣的话,欢迎大家关注我的微博或者公号,偶尔会发些思考和技术文章

    微博是:https://weibo.com/oeddyo

    公众号是:谢科的创业笔记

    52 replies  •  2020-12-28 15:59:38 +08:00
    Judoon
    Judoon
    Dec 23, 2020
    1
    "卡拉先生发布于 2020 年 12 月 25 日 | 上次编辑:2020 年 12 月 23 日"

    我穿越了?
    KalaSearch
    KalaSearch
    OP
    Dec 23, 2020❤️4
    2
    一些好的链接推荐在这里

    [High Performance Browser Networking]( https://hpbn.co/) - 有点老但是深入浅出把应用层程序员需要关心的 TCP,UDP 讲得很清楚

    [Nginx Setting Doc]( http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_buffer_size) - 官方文档

    [how to reduce ssl time of website]( https://stackoverflow.com/questions/36672261/how-to-reduce-ssl-time-of-website) - SO 上一个非常好的讨论

    [如何用 CURL debug 延迟问题]( https://help.heroku.com/NY64S5NL/how-do-i-debug-latency-issues-using-curl)
    KalaSearch
    KalaSearch
    OP
    Dec 23, 2020
    3
    @Judoon 你没有穿越,这是 markdown 里手写的,我不知道为什么手抽了... 那就提前祝圣诞快乐吧
    KalaSearch
    KalaSearch
    OP
    Dec 23, 2020
    4
    @Judoon (上次编辑是 git 抽的时间,所以是准的)
    airqj
    airqj
    Dec 23, 2020
    5
    已收藏 :)
    leido
    leido
    Dec 23, 2020
    6
    ssl_session_cache 开启了不利于抵御 DDoS 攻击
    KalaSearch
    KalaSearch
    OP
    Dec 23, 2020
    7
    @airqj 感谢喜欢 <3
    KalaSearch
    KalaSearch
    OP
    Dec 23, 2020
    8
    @leido 是因为可能耗尽连接资源?
    fengmumu
    fengmumu
    Dec 23, 2020
    9
    收藏+1
    Junzhou
    Junzhou
    Dec 23, 2020 via iPhone
    10
    ios Safari 上请求慢,nginx 配置 OCSP Stapling 就可以了,因为 ios 上会默认进行 ocsp 实时查询
    rihkddd
    rihkddd
    Dec 23, 2020❤️1
    11
    学习了,两点建议:
    1. 使用统一的性能测量方式,文中有时候是平均值有时候是 p95,如果对性能比较敏感应该用比较严格的标准比如 p99.
    2. 量化每一个优化措施的收益。
    bagheer
    bagheer
    Dec 23, 2020
    12
    为啥你的 kala 搜索一直 beta? 小站想用一下,也不知道你是免费呀还是收费呀, 就一直 beta
    KalaSearch
    KalaSearch
    OP
    Dec 23, 2020
    13
    @Junzhou 是的,文中也有提到,感谢
    qiayue
    qiayue
    Dec 23, 2020
    14
    好几次了,我想找到你的网站,都去搜索“卡卡搜索”,结果没找到。
    直到刚才又看了下你们的 icon 是狗头,所以联想了一下,卡拉是条狗,所以你们的名字是从这里来的吗?
    KalaSearch
    KalaSearch
    OP
    Dec 23, 2020
    15
    @rihkddd 两点都非常到位
    1. 其实到 P999 都是 50ms 左右,但是有非常少量慢查询,截图 Y 轴会不太好看 :D
    2. 是的,应该是这样。文中提到的所有点中,最大的改进是 OCSP 和调整 buffer size
    KalaSearch
    KalaSearch
    OP
    Dec 23, 2020
    16
    @qiayue 哈哈哈,好多人这么问,所以我们干脆就... 把狗头当 icon 了

    但讲真,我们连取名都写了篇 blog: https://kalasearch.cn/blog/how-to-name-your-startup/
    whileFalse
    whileFalse
    Dec 23, 2020
    17
    卡拉搜索在 Mac 上与双拼输入法不兼容。输入拼音后按空格无法上屏,依旧是拼音。
    KalaSearch
    KalaSearch
    OP
    Dec 23, 2020
    18
    @bagheer 是收费的。实在是抱歉,我们还在优化调整一些功能,现在只有被邀请的部分用户,等更成熟一些了会开放自助服务。如果感兴趣的话麻烦你加一下微信,会有商务小哥联系你哒
    bagheer
    bagheer
    Dec 23, 2020
    19
    @KalaSearch 啥都没有,试用都不想...把价格表弄上啊,不然现在丢数据啥的没办法说.
    现在就像个个人玩票的东西,点一下给我弹个个人二维码...
    KalaSearch
    KalaSearch
    OP
    Dec 23, 2020
    20
    @whileFalse 是指电影搜索的 demo 吗?
    Showfom
    Showfom
    PRO
    Dec 23, 2020 via iPhone
    21
    ssl_trusted_certificate 只要中间链和 CA 就行吧
    Junzhou
    Junzhou
    Dec 23, 2020
    22
    @KalaSearch 好文,已收藏
    whileFalse
    whileFalse
    Dec 23, 2020
    23
    bpf2049
    bpf2049
    Dec 23, 2020
    24
    好文,能一次性写得那么清楚的还是第一次见,感谢分享
    yylzcom
    yylzcom
    Dec 23, 2020
    25
    如何检测 OCSP Stapling 是否已经开启?

    这个里面的命令 markdown 解析的时候加链接了, 楼主修改一下?
    tonysbag
    tonysbag
    Dec 23, 2020
    26
    @yylzcom 可以尝试用网站 https://www.ssllabs.com/ssltest/在线检测所有和 SSL 有关的设置。
    KalaSearch
    KalaSearch
    OP
    Dec 23, 2020
    27
    @whileFalse 应该是前端的处理不太好,我找前端修一修。感谢反馈

    之后我们会出一个 Vue 和 React 的前端库,一篮子解决掉前端写搜索框麻烦的问题
    KalaSearch
    KalaSearch
    OP
    Dec 23, 2020
    28
    @yylzcom 感谢~我改一下
    KalaSearch
    KalaSearch
    OP
    Dec 23, 2020
    29
    @suifengdang666 感谢喜欢 <3 提前祝节日快乐
    yylzcom
    yylzcom
    Dec 23, 2020
    30
    @tonysbag #26 嗯 我一直在用, 谢谢分享信息
    anxn
    anxn
    Dec 23, 2020 via Android
    31
    建议配合 cloudflare 写一篇
    用 cf 做 cdn 的也挺多的
    stdout
    stdout
    Dec 23, 2020
    32
    好文,感谢分享
    hive
    hive
    Dec 23, 2020
    33
    RSS 有没有计划再优化一下,提供文章内容呢?
    psirnull
    psirnull
    Dec 23, 2020
    34
    把项目经理要求的注释掉就可以了。
    garlics
    garlics
    Dec 23, 2020
    35
    有个问题,axios 或者 curl 等非浏览器请求会进行 OCSP 验证吗?
    garlics
    garlics
    Dec 23, 2020
    36
    @garlics 看了 OCSP 的 wiki,说是 chrome 并不使用 ocsp 这种验证方式
    yuthelloworld
    yuthelloworld
    Dec 23, 2020
    37
    好文
    Junzhou
    Junzhou
    Dec 23, 2020 via iPhone
    38
    图片下的标题 为什么要优化 Nginx 少了一个 x
    w292614191
    w292614191
    Dec 23, 2020
    39
    the "http2" parameter requires ngx_http_v2_module in /root/java/nginx/conf/nginx.conf:36
    boboliu
    boboliu
    Dec 23, 2020
    40
    补充下 ocsp stapling 的事:通常国内服务器到 le 的 ocsp server 连接性其实也有问题……所以如果要在国内服务器做这个设定的话,套个代理比较好
    hgc81538
    hgc81538
    Dec 23, 2020
    41
    @KalaSearch 用 ECC 算法證書或許還能提速, 參考 https://v2ex.com/t/732953 四樓
    kisshere
    kisshere
    Dec 23, 2020❤️2
    43
    高端的 NGINX 往往只需要最简单的 ssl 配置,忙碌了两个小时的陈师傅,最终决定套上 CF 直接开启 HTTPS
    YouLMAO
    YouLMAO
    Dec 23, 2020
    44
    grpc over nginx
    eudore
    eudore
    Dec 24, 2020
    45
    ciphers 的安全性和兼容性怎么样?
    dany813
    dany813
    Dec 24, 2020
    46
    收藏
    prondtoo
    prondtoo
    Dec 28, 2020
    48
    HTTPS 上硬件加速加密解密,独立出来最快。
    haihongblog
    haihongblog
    Dec 28, 2020
    49
    很棒,学到了很多,解决了现有一些问题
    darksword21
    darksword21
    Dec 28, 2020
    50
    订阅了 rss
    Lemeng
    Lemeng
    Dec 28, 2020
    51
    先收藏了,感谢,辛苦了
    7654
    7654
    Dec 28, 2020
    52
    ssl_trusted_certificate /path/to/full_chain.pem;这里不是填 ca.cer 吗
    fullchain 和 key 写在在 ssl_certificate ssl_certificate_key 内
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4177 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 86ms · UTC 09:38 · PVG 17:38 · LAX 01:38 · JFK 04:38
    ♥ Do have faith in what you're doing.