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
学习了,两点建议:
1. 使用统一的性能测量方式,文中有时候是平均值有时候是 p95,如果对性能比较敏感应该用比较严格的标准比如 p99. 2. 量化每一个优化措施的收益。 |
12
bagheer 2020-12-23 11:38:40 +08:00
为啥你的 kala 搜索一直 beta? 小站想用一下,也不知道你是免费呀还是收费呀, 就一直 beta
|
13
KalaSearch OP @Junzhou 是的,文中也有提到,感谢
|
14
qiayue 2020-12-23 11:53:55 +08:00
好几次了,我想找到你的网站,都去搜索“卡卡搜索”,结果没找到。
直到刚才又看了下你们的 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 2020-12-23 12:43:43 +08:00 via iPhone
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
suifengdang666 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
lbyo 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 2020-12-23 17:17:14 +08:00
|
43
kisshere 2020-12-23 17:40:10 +08:00 2
高端的 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 2020-12-28 11:49:19 +08:00
订阅了 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 内 |