天策无双
一个优雅的自我实现者

LNMP环境编译添加Brotli模块,Cookie Secure模块,提高网站速度和安全性

本文共 2592 个字,预计阅读需要 5 分钟

Nginx 有很多功能丰富的模块,这里面包含自带模块以及第三方模块,这里介绍一下军哥 LNMP 环境下如何添加第三方 Nginx 模块的教程,在 Nginx 中添加 Brotli 模块以及 Cookie Secure 模块,大大提高网站速度和安全性。

Nginx 安装 Brotli 模块

根据 Google 发布的研究报告,Brotli 压缩算法具有多个特点,最典型的是以下 3 个:

  • 针对常见的 Web 资源内容,Brotli 的性能相比 Gzip 提高了 17-25%;
  • 当 Brotli 压缩级别为 1 时,压缩率比 Gzip 压缩等级为 9(最高)时还要高;
  • 在处理不同 HTML 文档时,Brotli 依然能够提供非常高的压缩率。

Brotli 压缩算法对比

可以看到 Brotli 算法的效果还是比较显著了,明显提高了速度。

下载 Nginx Brotli 源码

找一个存放 Brotli 源码的目录,比如我的是/root/lnmp1.6/src目录,然后执行以下命令:

cd /root/lnmp1.6/src/
git clone https://github.com/google/ngx_brotli.git

然后添加模块路径到lnmp.conf文件中,执行以下命令:

vim /root/lnmp1.6/lnmp.conf

Nginx_Modules_Options=后面添加上你需要的模块,比如:

Nginx_Modules_Options='--add-module=/root/lnmp1.6/src/ngx_brotli'

然后保存文件,执行 Nginx 升级命令:

 cd /root/lnmp1.6
./upgrade.sh nginx

选择你想要升级的版本,即可编译安装 Nginx 成功添加新的模块。

修改配置文件

安装完成之后,需要修改 Nginx 的配置文件,因为前面我们只是给 Nginx 编译安装上了 Brotli 的模块,但是此时它还是未启用生效状态的,我们需要编辑 Nginx 的配置文件,加入 Brotli 的配置。

编辑/usr/local/nginx/conf/vhost中的网站对应配置文件,在Sever段中加入如下配置:

# 开启 ngx_brotli 压缩
brotli on;

# 指定压缩数据的最小长度,只有大于或等于最小长度才会对其压缩。这里指定 20 字节
brotli_min_length 20;

# Brotli 请求缓冲区的数量和大小
brotli_buffers 16 8k;

# Brotli 使用的窗口值。默认值为 512k
brotli_window 512k;

# 压缩水平可以是 0 到 11,默认值是 6。太高的压缩水平对性能提升并没有太大好处,因为这需要更多的 CPU 时间
brotli_comp_level 6;

# 指定允许进行压缩的类型
brotli_types text/xml text/plain application/json text/css application/x-javascript application/xml application/xml+rss text/javascript image/svg+xml image/svg application/font-woff application/vnd.ms-fontobject application/vnd.apple.mpegurl application/javascript image/x-icon image/jpeg image/jpg image/gif image/png;

# 是否允许查找预处理好的、以 .br 结尾的压缩文件。可选值为 on、off、always
brotli_static always;

如果按照官方提供的文档说明,我们可以把它放在 Nginx 配置文件nginx.conf的 HTTP 段中,本站就是这么处理的,因为多个站点可以一次性全部开启。

重载 Nginx 使得配置生效:

lnmp nginx reload

然后可以在前端查看页面是否启用了 Brotli 算法,只要响应头里看到Content-Encoding: br字眼,说明已经成功启用了。

成功开启 Brotli 算法,响应头出现 br

如果没有出现,建议查看 nginx 的模块是否编译成功,可以执行:

nginx -V

查看具体的模块,如果有 Brotli 字眼,说明已经成功,这个时候就检查配置文件即可。

安装 Nginx_Cookie_Flag_Module 模块

由于谷歌的安全限制,现在浏览器会出现 cookie 的警告提示,通过在 HTTP 响应标头中包含HTTPOnlySecure可以帮助保护您的 Web 应用程序,免受跨站点脚本和会话操纵攻击。

HTTPOnly 和 Secure 安全警示

有两种方法可以在 Nginx 中配置 HTTPOnly 和 Secure 的 Cookie 属性:

使用 proxy_cookie_path

将以下指令添加到ssl.confdefault.conf

proxy_cookie_path / "/; HTTPOnly; Secure";

然后重载 Nginx 配置

lnmp nginx reload

配置 Nginx_Cookie_Flag_Module 模块

这里我们使用 Nginx 模块的方式,相比前面滥用 cookie 安全的方式更加严谨。

下载 Nginx_Cookie_Flag_Module 模块

找一个你想存放 Brotli 源码的目录,比如我的/root/lnmp1.6/src目录,然后执行以下命令:

cd /root/lnmp1.6/src/
git clone https://github.com/AirisX/nginx_cookie_flag_module.git

和上面安装 Brotli 模块一样,我们在lnmp.conf文件中添加相应模块,如果你想要将这两个一起添加,那么命令如下:

Nginx_Modules_Options='--add-module=/root/lnmp1.6/src/ngx_brotli --add-module=/root/lnmp1.6/src/nginx_cookie_flag_module'

然后保存文件,执行 Nginx 升级命令:

 cd /root/lnmp1.6
./upgrade.sh nginx

选择你想要升级的版本,即可编译安装 Nginx 成功添加新的模块。

修改配置文件

查看模块是否安装成功:

nginx -V

然后可以在相应的配置文件中的locationserver指令中添加以下行:

set_cookie_flag HttpOnly secure;

重载 Nginx 配置,到这里就可以解决浏览器 cookie 警告的问题了,增强了网站安全性。

赞(0) 打赏
本博客内容如无特殊说明皆为原创,未经允许不得转载:天策无双 » LNMP环境编译添加Brotli模块,Cookie Secure模块,提高网站速度和安全性

打赏鼓励博主创作更多优质内容!

支付宝扫一扫打赏

微信扫一扫打赏