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

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

  •  6
     
  •   KalaSearch · Dec 23, 2020 · 10879 views
    This topic created in 2013 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
        1
    Judoon  
       Dec 23, 2020
    "卡拉先生发布于 2020 年 12 月 25 日 | 上次编辑:2020 年 12 月 23 日"

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

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

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

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

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