Nginx高级配置——gzip

2024-08-22 02:28
文章标签 配置 nginx 高级 gzip

本文主要是介绍Nginx高级配置——gzip,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


Nginx 压缩功能简介

Nginx支持对指定类型的文件进行压缩然后再传输给客户端,而且压缩还可以设置压缩比例,压缩后的文
件大小将比源文件显著变小,样有助于降低出口带宽的利用率,降低企业的IT支出,不过会占用相
应的CPU资源
Nginx对文件的压缩功能是依赖于模块 ngx_http_gzip_module,默认是内置模块

1. 压缩的好处

启用压缩可以带来以下好处:

  • 减少带宽使用:通过压缩文件,可以显著减少数据传输量,降低带宽成本。
  • 提高页面加载速度:较小的数据量意味着更快的下载速度,从而提高了页面加载速度。
  • 改善用户体验:更快的页面加载速度可以提升用户的满意度。

2. 启用压缩

2.1 使用 gzip 压缩

Nginx 默认支持 gzip 压缩。要在 Nginx 中启用 gzip 压缩,你需要在配置文件中添加以下内容:

http {gzip on;gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}

这里的关键指令是 gzip on,它开启了 gzip 压缩。gzip_types 指令指定了哪些 MIME 类型的内容应该被压缩。

2.2 配置 gzip 设置

你可以进一步配置 gzip 压缩的细节。例如:

http {gzip on;gzip_vary on;gzip_proxied any;gzip_comp_level 6;gzip_buffers 16k 8k;gzip_http_version 1.1;gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}
  • gzip_vary:启用此选项可以告诉浏览器是否已启用 gzip 压缩。
  • gzip_proxied:指定何时对代理内容启用压缩。
  • gzip_comp_level:设置压缩级别(1 到 9)。
  • gzip_buffers:设置压缩缓冲区的大小。
  • gzip_http_version:指定 HTTP 版本。

3. 配置 gzip 压缩的注意事项

3.1 浏览器兼容性

确保客户端浏览器支持 gzip 压缩。大多数现代浏览器都支持 gzip 压缩。

3.2 不要压缩小文件

对于小于一定阈值的小文件,压缩可能会增加 CPU 负担,而不会带来明显的压缩效果。你可以通过以下设置排除小文件:

gzip_min_length 1024;

3.3 避免压缩已压缩的内容

对于已经被压缩的内容类型(如 JPEG 图像),不应再次压缩。可以通过以下设置排除这些类型:

gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

3.4 配置缓存

如果你使用了缓存,确保缓存中存储的是已压缩的内容。这可以通过以下设置实现:

gzip_vary on;

4. 静态文件的预压缩

除了动态生成的内容,你还可以预先压缩静态文件(如 HTML、CSS 和 JavaScript 文件)。这样可以减少服务器的 CPU 使用率。

4.1 使用 gzip 静态压缩

你可以在 Nginx 中启用 gzip 静态压缩,以自动处理静态文件的压缩:

http {gzip_static on;
}

4.2 手动预压缩静态文件

你也可以手动使用 gzip 命令预压缩静态文件,然后在 Nginx 中使用 alias 指令指向这些压缩文件。

例如,假设你的静态文件位于 /var/www/html,你可以使用以下命令压缩它们:

find /var/www/html -type f \( -name "*.html" -o -name "*.css" -o -name "*.js" \) -exec gzip -9 {} \;

然后在 Nginx 配置文件中,可以使用 alias 指令指向这些压缩文件:

location ~* ^.+\.(html|css|js)$ {alias /var/www/html;gzip_static on;
}

5. 最佳实践

5.1 监控性能

启用压缩后,定期检查服务器的 CPU 使用率和压缩效果,以确保压缩没有导致过多的 CPU 负担。

5.2 优化配置

根据服务器的实际负载和内容类型,调整 gzip_comp_levelgzip_buffers 的值以获得最佳性能。

5.3 使用 CDN

考虑使用 CDN(内容分发网络)来进一步加速静态内容的分发,并减轻服务器的负担。

这篇关于Nginx高级配置——gzip的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1094971

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令