深入浅出 -- 系统架构之负载均衡Nginx资源压缩

一、Nginx资源压缩

建立在动静分离的基础之上,如果一个静态资源的Size越小,那么自然传输速度会更快,同时也会更节省带宽,因此我们在部署项目时,也可以通过Nginx对于静态资源实现压缩传输,一方面可以节省带宽资源,第二方面也可以加快响应速度并提升系统整体吞吐。

Nginx也提供了三个支持资源压缩的模块ngx_http_gzip_module、ngx_http_gzip_static_module、ngx_http_gunzip_module,其中ngx_http_gzip_module属于内置模块,代表着可以直接使用该模块下的一些压缩指令,后续的资源压缩操作都基于该模块,先来看看压缩配置的一些参数/指令:

了解了Nginx中的基本压缩配置后,接下来可以在Nginx中简单配置一下:

bash 复制代码
http{
    # 开启压缩机制
    gzip on;
    # 指定会被压缩的文件类型(也可自己配置其他类型)
    gzip_types text/plain application/javascript text/css application/xml text/javascript image/jpeg image/gif image/png;
    # 设置压缩级别,越高资源消耗越大,但压缩效果越好
    gzip_comp_level 5;
    # 在头部中添加Vary: Accept-Encoding(建议开启)
    gzip_vary on;
    # 处理压缩请求的缓冲区数量和大小
    gzip_buffers 16 8k;
    # 对于不支持压缩功能的客户端请求不开启压缩机制
    gzip_disable "MSIE [1-6]\."; # 低版本的IE浏览器不支持压缩
    # 设置压缩响应所支持的HTTP最低版本
    gzip_http_version 1.1;
    # 设置触发压缩的最小阈值
    gzip_min_length 2k;
    # 关闭对后端服务器的响应结果进行压缩
    gzip_proxied off;
}

在上述的压缩配置中,最后一个gzip_proxied选项,可以根据系统的实际情况决定,总共存在多种选项:

  • off:关闭Nginx对后台服务器的响应结果进行压缩。
  • expired:如果响应头中包含Expires信息,则开启压缩。
  • no-cache:如果响应头中包含Cache-Control:no-cache信息,则开启压缩。
  • no-store:如果响应头中包含Cache-Control:no-store信息,则开启压缩。
  • private:如果响应头中包含Cache-Control:private信息,则开启压缩。
  • no_last_modified:如果响应头中不包含Last-Modified信息,则开启压缩。
  • no_etag:如果响应头中不包含ETag信息,则开启压缩。
  • auth:如果响应头中包含Authorization信息,则开启压缩。
  • any:无条件对后端的响应结果开启压缩机制。

OK~,简单修改好了Nginx的压缩配置后,可以在原本的index页面中引入一个jquery-3.6.0.js文件:

bash 复制代码
<script type="text/javascript" src="jquery-3.6.0.js"></script>

分别来对比下压缩前后的区别:

从图中可以很明显看出,未开启压缩机制前访问时,js文件的原始大小为230K,当配置好压缩后再重启Nginx,会发现文件大小从230KB→69KB,效果立竿见影!

注意点:

①对于图片、视频类型的数据,会默认开启压缩机制,因此一般无需再次开启压缩。

②对于.js文件而言,需要指定压缩类型为application/javascript,而并非text/javascript、application/x-javascript

相关推荐
工具罗某人1 天前
docker快速部署minio
java·nginx·docker
oMcLin1 天前
如何在Ubuntu 24.04上通过配置Nginx与Keepalived实现高可用负载均衡集群
nginx·ubuntu·负载均衡
小Ti客栈1 天前
前后台Nginx部署同域名路径区分配置
java·前端·nginx
DeepVis Research1 天前
基于Kelvin基准集的分布式分支策略与零信任架构演进分析 (DevSecOps Case Study)
运维·网络安全·系统架构·数据集·边缘计算
RockHopper20251 天前
Designing Inventory & Genealogy Management in Smart Manufacturing Systems
系统架构·智能制造·isa-95·isa-88
源远流长jerry1 天前
四层与七层负载均衡实现原理及核心差异
运维·负载均衡
源远流长jerry1 天前
DPVS 深度解析:基于 DPDK 的高性能四层负载均衡器
运维·负载均衡·lvs
cooldream20091 天前
Nginx 部署 Vue 项目后首页空白问题深度解析:从样式冲突到路由配置的系统性排查
运维·vue.js·nginx
2503_946971861 天前
【DataRecovery/GitOps】2026年度全量数据回滚与多重宇宙版本控制基准索引 (Phase 3-End & Phase 4-Start)
网络安全·系统架构·云计算·数据集·版本控制
hk11241 天前
【K8s/Cluster】2026年度分布式微工集群与高并发任务编排基准索引 (Benchmark Index)
运维·算法·系统架构·云计算·数据集