[原创]本人之前写的一些关于 Nginx 配置的文章

2015-08-21 14:13:50 +08:00
 qgy18
本人对 HTTP 协议和 Nginx 比较有兴趣,下面是博客的几篇关于 Nginx 的文章,欢迎交流探讨。

另外,由于我的 Linode Tokyo 持续上不去,刚把博客迁回国内,正在关站备案中,请用 OSX 、 Android 、 iOS 、 Linux 访问(或者模拟 UA 为各大 Spider )。

本博客 Nginx 配置之安全篇
https://www.imququ.com/post/my-nginx-conf-for-security.html

本博客 Nginx 配置之性能篇
https://www.imququ.com/post/my-nginx-conf-for-wpo.html

Nginx 开始支持 HTTP/2 了
https://www.imququ.com/post/nginx-http2-patch.html
6089 次点击
所在节点    NGINX
65 条回复
qgy18
2015-08-21 21:44:42 +08:00
@simodorg

多一级意味着服务端发送的证书链就更大,建立 https 连接就更慢了。

---

在给 Nginx 指定证书时,需要选择合适的证书链。因为浏览器在验证证书信任链时,会从站点证书开始,递归验证父证书,直至信任的根证书。这里涉及到两个问题: 1 )服务器证书是在握手期间发送的,由于 TCP 初始拥塞窗口的存在,如果证书太长很可能会产生额外的往返开销; 2 )如果服务端证书没包含中间证书,大部分浏览器可以正常工作,但会暂停验证并根据子证书指定的父证书 URL 自己获取中间证书。这个过程会产生额外的 DNS 解析、建立 TCP 连接等开销。

所以,服务端证书链的最佳实践是包含 站点证书 和 中间证书 两级。根证书已经内置于各大浏览器内,完全没必要再包含。下图是本博客的证书链,服务端证书包含了「 www.imququ.com 」站点证书和「 Thawte DV SSL CA 」中间证书。另外我测过:如果不包含中间证书, Firefox 之外的主流浏览器都能正常完成验证, Firefox 似乎不会自己去获取中间证书。

见: https://www.imququ.com/post/switch-to-https.html#toc-0
dingyaguang117
2015-08-22 01:27:45 +08:00
guoqiao
2015-08-22 09:51:24 +08:00
@zhicheng 从你的回复中第一次知道了 TextArea.com, 简洁但不失考究, 非常不错.
zhicheng
2015-08-22 10:56:13 +08:00
@guoqiao 感谢,希望能给大家提供一个专心写作,分享内容的社区。
wbsdty331
2015-08-23 08:49:22 +08:00
我的居然只有 B...貌似就出在加密方式
qgy18
2015-08-23 15:50:39 +08:00
@Had 换成便宜的 RapidSSL 了,证书链少一级看着就是爽呀~
Had
2015-08-23 22:05:32 +08:00
@qgy18 不知道向 RapidSSL 客服申请一下,能不能拿到 ECC 证书~
ECC 证书的大小就又缩小了一个量级了。
xiqingongzi
2015-08-23 23:14:03 +08:00
学习了
Soaper
2015-08-24 01:36:28 +08:00
马克
qgy18
2015-09-01 00:32:15 +08:00
@Had RapidSSL DV 没办法拿到 ECC ,但是我发现同样便宜的 Comodo PositiveSSL 却可以方便的拿 ECC ,只要 CSR 是 ECC 就可以了。 https://www.imququ.com?ua=linux
但是证书依然是四级,这一点郁闷。另外 windows xp 一律不支持 ECC ,也很头疼。
Had
2015-09-01 01:17:24 +08:00
@qgy18
所以就放弃 XP 用户吧。
要不就掏点钱,上 GeoTrust or Digicert or GlobalSign ,然后去拿 ECC 。
https://support.globalsign.com/customer/portal/articles/1995283-ecc-compatibility
Had
2015-09-01 01:22:25 +08:00
@qgy18
另外,用了 ECC 就可以在 Cipher Suites 里面去掉:
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA

同时,现在的 ECC 证书链还是混合的证书链, GlobalSign 的 ECC Root Certs 前有这么个描述,当然实际我没有用过...
https://support.globalsign.com/customer/portal/articles/1426602-globalsign-root-certificates

我在向 Digicert 申请一个纯 ECC 的证书链及证书,但是他们的客服老是误解我,都 reissue 了好多次了,我都不好意思了...
Had
2015-09-01 01:53:11 +08:00
@qgy18
GeoTrust 的 ECC Root CA 测试页 https://ssltest42.ssl.symclab.com/ 两级!
GlobalSign 256 https://2038r4.globalsign.com/
GlobalSign 384 https://2038r5.globalsign.com/
isCyan
2015-09-03 08:59:18 +08:00
楼主的阿里云带宽多大?还是启用了某些特殊技能?访问这么快!
wujunze
2016-03-18 16:49:37 +08:00
博主网站备案成功没有?
qgy18
2016-03-18 18:10:20 +08:00
chinaiy
2016-11-24 10:07:10 +08:00
大大,看你博客配置完整篇一步一步操作,编译和安装 Nginx , make 的时候出现下面的错误,求助解决方法,谢谢

cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I ../openssl/.openssl/include -I objs -I src/http -I src/http/modules -I src/http/v2 \
-o objs/addon/src/ngx_http_brotli_filter_module.o \
../ngx_brotli/src/ngx_http_brotli_filter_module.c
../ngx_brotli/src/ngx_http_brotli_filter_module.c: In function ‘ ngx_http_brotli_body_filter ’:
../ngx_brotli/src/ngx_http_brotli_filter_module.c:272:9: error: ‘ BrotliEncoderInputBlockSize ’ is deprecated (declared at /usr/local/include/brotli/encode.h:87) [-Werror=deprecated-declarations]
ctx->brotli_ring = BrotliEncoderInputBlockSize(ctx->encoder);
^
../ngx_brotli/src/ngx_http_brotli_filter_module.c: In function ‘ ngx_http_brotli_filter_add_data ’:
../ngx_brotli/src/ngx_http_brotli_filter_module.c:498:5: error: ‘ BrotliEncoderCopyInputToRingBuffer ’ is deprecated (declared at /usr/local/include/brotli/encode.h:95) [-Werror=deprecated-declarations]
BrotliEncoderCopyInputToRingBuffer(ctx->encoder, size, b->pos);
^
../ngx_brotli/src/ngx_http_brotli_filter_module.c: In function ‘ ngx_http_brotli_filter_process ’:
../ngx_brotli/src/ngx_http_brotli_filter_module.c:534:5: error: ‘ BrotliEncoderWriteData ’ is deprecated (declared at /usr/local/include/brotli/encode.h:109) [-Werror=deprecated-declarations]
if (!BrotliEncoderWriteData(ctx->encoder, ctx->last, ctx->flush, &size,
^
cc1: all warnings being treated as errors
make[1]: *** [objs/addon/src/ngx_http_brotli_filter_module.o] Error 1
make[1]: Leaving directory `/root/nginx-1.11.5'
make: *** [build] Error 2
qgy18
2016-11-24 17:04:38 +08:00
@chinaiy 编译时加上这个试试呢?

--with-cc-opt=-Wno-deprecated-declarations
chinaiy
2016-11-25 08:41:58 +08:00
@qgy18 嗯,加上就可以了,有个奇怪的问题请教下大大,我配置好了后使用谷歌和火狐都可以访问,但 360 浏览器(快速模式)却不可以访问,后来我去掉 server 中的 http2 fastopen=3 reuseport ,只保留 listen 443 ssl , 360 就可以访问,不知道这个是什么原因?
chinaiy
2016-12-12 12:12:45 +08:00
@qgy18 大大, Brotli 是不是又修改了,在阿里云的一台新服务器上按照 https://imququ.com/post/my-nginx-conf.html 这篇文章来设置,前面都没问题,到./configure --add-module=../ngx_brotli --add-module=../nginx-ct-1.3.1 --with-openssl=../openssl --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module 这里的时候就出行错误提示,加上--with-cc-opt=-Wno-deprecated-declarations 也是同样错误,错误提示:


./configure: error: Brotli library is missing from the ../ngx_brotli/deps/brotli directory.

Please make sure that the git submodule has been checked out:

cd ../ngx_brotli && git submodule update --init && cd /root/nginx-1.11.5

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/214854

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX