
Nginx 应该是应用最广泛的服务器之一了,不管是反代还是负载均衡都有它的身影。
我们也一直用 Nginx 来作反向代理,同时完成一些简单的安全和负责 HTTPS 之类的任务。前段时间有用户提到苹果设备( iOS Safari )上搜索请求慢,因此进入了踩坑之旅。
Nginx 的可配置参数可谓眼花缭乱,而 HTTPS 的配置更需要了解一些底层原理才能知其所以然。
而我们之前在调整一些配置其实没有完全吃透,几乎是看着 stackoverflow 找了个模板来调整。
所以索性这次读了 High Performance Web Browser,同时跟一位有经验的同事一起,把 Nginx 重新调整了一遍,把首次请求的延迟降低了 30% 左右。当然这个数字会随着你的业务和请求数据而变化,但是如果是网站的话,很可能提升会更大
在改配置的时候我配合着 HPBN 做了详细的笔记,顺便整理了出来,写成了这篇文章,希望大家喜欢。
图是用 Canva 做的,欢迎随意盗图 :D

1 Judoon 2020-12-23 10:42:08 +08:00 "卡拉先生发布于 2020 年 12 月 25 日 | 上次编辑:2020 年 12 月 23 日" 我穿越了? |
2 KalaSearch OP 一些好的链接推荐在这里 [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) |
3 KalaSearch OP @Judoon 你没有穿越,这是 markdown 里手写的,我不知道为什么手抽了... 那就提前祝圣诞快乐吧 |
4 KalaSearch OP @Judoon (上次编辑是 git 抽的时间,所以是准的) |
5 airqj 2020-12-23 11:00:57 +08:00 已收藏 :) |
6 leido 2020-12-23 11:10:55 +08:00 ssl_session_cache 开启了不利于抵御 DDoS 攻击 |
7 KalaSearch OP @airqj 感谢喜欢 <3 |
8 KalaSearch OP @leido 是因为可能耗尽连接资源? |
9 fengmumu 2020-12-23 11:32:11 +08:00 收藏+1 |
10 Junzhou 2020-12-23 11:35:07 +08:00 via iPhone ios Safari 上请求慢,nginx 配置 OCSP Stapling 就可以了,因为 ios 上会默认进行 ocsp 实时查询 |
11 rihkddd 2020-12-23 11:38:07 +08:00 学习了,两点建议: 1. 使用统一的性能测量方式,文中有时候是平均值有时候是 p95,如果对性能比较敏感应该用比较严格的标准比如 p99. 2. 量化每一个优化措施的收益。 |
12 bagheer 2020-12-2311:38:40 +08:00 为啥你的 kala 搜索一直 beta? 小站想用一下,也不知道你是免费呀还是收费呀, 就一直 beta |
13 KalaSearch OP @Junzhou 是的,文中也有提到,感谢 |
14 qiayue PRO 好几次了,我想找到你的网站,都去搜索“卡卡搜索”,结果没找到。 直到刚才又看了下你们的 icon 是狗头,所以联想了一下,卡拉是条狗,所以你们的名字是从这里来的吗? |
15 KalaSearch OP @rihkddd 两点都非常到位 1. 其实到 P999 都是 50ms 左右,但是有非常少量慢查询,截图 Y 轴会不太好看 :D 2. 是的,应该是这样。文中提到的所有点中,最大的改进是 OCSP 和调整 buffer size |
16 KalaSearch OP @qiayue 哈哈哈,好多人这么问,所以我们干脆就... 把狗头当 icon 了 但讲真,我们连取名都写了篇 blog: https://kalasearch.cn/blog/how-to-name-your-startup/ |
17 whileFalse 2020-12-23 11:57:51 +08:00 卡拉搜索在 Mac 上与双拼输入法不兼容。输入拼音后按空格无法上屏,依旧是拼音。 |
18 KalaSearch OP @bagheer 是收费的。实在是抱歉,我们还在优化调整一些功能,现在只有被邀请的部分用户,等更成熟一些了会开放自助服务。如果感兴趣的话麻烦你加一下微信,会有商务小哥联系你哒 |
19 bagheer 2020-12-23 12:06:28 +08:00 @KalaSearch 啥都没有,试用都不想...把价格表弄上啊,不然现在丢数据啥的没办法说. 现在就像个个人玩票的东西,点一下给我弹个个人二维码... |
20 KalaSearch OP @whileFalse 是指电影搜索的 demo 吗? |
21 Showfom PRO ssl_trusted_certificate 只要中间链和 CA 就行吧 |
22 Junzhou 2020-12-23 12:53:21 +08:00 @KalaSearch 好文,已收藏 |
23 whileFalse 2020-12-23 13:16:57 +08:00 @KalaSearch 对 |
24 bpf2049 2020-12-23 13:32:59 +08:00 好文,能一次性写得那么清楚的还是第一次见,感谢分享 |
25 yylzcom 2020-12-23 13:33:55 +08:00 如何检测 OCSP Stapling 是否已经开启? 这个里面的命令 markdown 解析的时候加链接了, 楼主修改一下? |
26 tonysbag 2020-12-23 13:37:59 +08:00 @yylzcom 可以尝试用网站 https://www.ssllabs.com/ssltest/在线检测所有和 SSL 有关的设置。 |
27 KalaSearch OP |
28 KalaSearch OP @yylzcom 感谢~我改一下 |
29 KalaSearch OP @suifengdang666 感谢喜欢 <3 提前祝节日快乐 |
31 anxn 2020-12-23 13:48:46 +08:00 via Android 建议配合 cloudflare 写一篇 用 cf 做 cdn 的也挺多的 |
32 stdout 2020-12-23 14:09:16 +08:00 好文,感谢分享 |
33 hive 2020-12-23 14:37:31 +08:00 RSS 有没有计划再优化一下,提供文章内容呢? |
34 psirnull 2020-12-23 14:46:23 +08:00 把项目经理要求的注释掉就可以了。 |
35 garlics 2020-12-23 14:51:25 +08:00 有个问题,axios 或者 curl 等非浏览器请求会进行 OCSP 验证吗? |
37 yuthelloworld 2020-12-23 14:56:32 +08:00 好文 |
38 Junzhou 2020-12-23 15:46:47 +08:00 via iPhone 图片下的标题 为什么要优化 Nginx 少了一个 x |
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 |
40 boboliu 2020-12-23 16:32:32 +08:00 补充下 ocsp stapling 的事:通常国内服务器到 le 的 ocsp server 连接性其实也有问题……所以如果要在国内服务器做这个设定的话,套个代理比较好 |
41 hgc81538 2020-12-23 16:58:26 +08:00 @KalaSearch 用 ECC 算法或能提速, 考 https://v2ex.com/t/732953 四 |
42 handsomeroger 202012-23 17:17:14 +08:00 |
43 kisshere 2020-12-23 17:40:10 +08:00 高端的 NGINX 往往只需要最简单的 ssl 配置,忙碌了两个小时的陈师傅,最终决定套上 CF 直接开启 HTTPS |
44 YouLMAO 2020-12-23 21:27:32 +08:00 grpc over nginx |
45 eudore 2020-12-24 09:17:19 +08:00 ciphers 的安全性和兼容性怎么样? |
46 dany813 2020-12-24 10:01:26 +08:00 收藏 |
47 Ansen 2020-12-28 09:30:20 +08:00 |
48 prondtoo 2020-12-28 10:21:33 +08:00 HTTPS 上硬件加速加密解密,独立出来最快。 |
49 haihongblog 2020-12-28 11:06:04 +08:00 很棒,学到了很多,解决了现有一些问题 |
50 darksword21 PRO 订阅了 rss |
51 Lemeng 2020-12-28 14:42:13 +08:00 先收藏了,感谢,辛苦了 |
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 内 |