写了篇文章 - 高性能 Nginx HTTPS 调优 如何为 HTTPS 提速 30% - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
KalaSearch
V2EX    程序员

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

  •  6
     
  •   KalaSearch 2020-12-23 10:22:43 +08:00 10385 次点击
    这是一个创建于 1817 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

    Nginx HTTPS 调优

    第 1 条附言    2020-12-23 14:17:20 +08:00

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

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

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

    52 条回复    2020-12-28 15:59:38 +08:00
    Judoon
        1
    Judoon  
       2020-12-23 10:42:08 +08:00
    "卡拉先生发布于 2020 年 12 月 25 日 | 上次编辑:2020 年 12 月 23 日"

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

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

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

    之后我们会出一个 Vue 和 React 的前端库,一篮子解决掉前端写搜索框麻烦的问题
    KalaSearch
        28
    KalaSearch  
    OP
       2020-12-23 13:38:24 +08:00
    @yylzcom 感谢~我改一下
    KalaSearch
        29
    KalaSearch  
    OP
       2020-12-23 13:38:48 +08:00
    @suifengdang666 感谢喜欢 <3 提前祝节日快乐
    yylzcom
        30
    yylzcom  
       2020-12-23 13:41:25 +08:00
    @tonysbag #26 嗯 我一直在用, 谢谢分享信息
    anxn
        31
    anxn  
       2020-12-23 13:48:46 +08:00 via Android
    建议配合 cloudflare 写一篇
    用 cf 做 cdn 的也挺多的
    stdout
        32
    stdout  
       2020-12-23 14:09:16 +08:00
    好文,感谢分享
    hive
        33
    hive  
       2020-12-23 14:37:31 +08:00
    RSS 有没有计划再优化一下,提供文章内容呢?
    psirnull
        34
    psirnull  
       2020-12-23 14:46:23 +08:00
    把项目经理要求的注释掉就可以了。
    garlics
        35
    garlics  
       2020-12-23 14:51:25 +08:00
    有个问题,axios 或者 curl 等非浏览器请求会进行 OCSP 验证吗?
    garlics
        36
    garlics  
       2020-12-23 14:52:03 +08:00
    @garlics 看了 OCSP 的 wiki,说是 chrome 并不使用 ocsp 这种验证方式
    yuthelloworld
        37
    yuthelloworld  
       2020-12-23 14:56:32 +08:00
    好文
    Junzhou
        38
    Junzhou  
       2020-12-23 15:46:47 +08:00 via iPhone
    图片下的标题 为什么要优化 Nginx 少了一个 x
    w292614191
        39
    w292614191  
       2020-12-23 16:00:57 +08:00
    the "http2" parameter requires ngx_http_v2_module in /root/java/nginx/conf/nginx.conf:36
    boboliu
        40
    boboliu  
       2020-12-23 16:32:32 +08:00
    补充下 ocsp stapling 的事:通常国内服务器到 le 的 ocsp server 连接性其实也有问题……所以如果要在国内服务器做这个设定的话,套个代理比较好
    hgc81538
        41
    hgc81538  
       2020-12-23 16:58:26 +08:00
    @KalaSearch 用 ECC 算法或能提速, 考 https://v2ex.com/t/732953
    handsomeroger
        42
    handsomeroger  
       202012-23 17:17:14 +08:00
    kisshere
        43
    kisshere  
       2020-12-23 17:40:10 +08:00   2
    高端的 NGINX 往往只需要最简单的 ssl 配置,忙碌了两个小时的陈师傅,最终决定套上 CF 直接开启 HTTPS
    YouLMAO
        44
    YouLMAO  
       2020-12-23 21:27:32 +08:00
    grpc over nginx
    eudore
        45
    eudore  
       2020-12-24 09:17:19 +08:00
    ciphers 的安全性和兼容性怎么样?
    dany813
        46
    dany813  
       2020-12-24 10:01:26 +08:00
    收藏
    prondtoo
        48
    prondtoo  
       2020-12-28 10:21:33 +08:00
    HTTPS 上硬件加速加密解密,独立出来最快。
    haihongblog
        49
    haihongblog  
       2020-12-28 11:06:04 +08:00
    很棒,学到了很多,解决了现有一些问题
    darksword21
        50
    darksword21  
    PRO
       2020-12-28 11:49:19 +08:00
    订阅了 rss
    Lemeng
        51
    Lemeng  
       2020-12-28 14:42:13 +08:00
    先收藏了,感谢,辛苦了
    7654
        52
    7654  
       2020-12-28 15:59:38 +08:00
    ssl_trusted_certificate /path/to/full_chain.pem;这里不是填 ca.cer 吗
    fullchain 和 key 写在在 ssl_certificate ssl_certificate_key 内
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5241 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 01:32 PVG 09:32 LAX 17:32 JFK 20:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86