自定义变量、Nginx 访问日志转换为 json 及 Nginx gzip 压缩功能(二)|学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习自定义变量、Nginx 访问日志转换为 json 及 Nginx gzip 压缩功能

开发者学堂课程【Nginx 企业级 Web 服务实战:自定义变量、Nginx 访问日志转换为 json 及 Nginx gzip 压缩功能】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/649/detail/10760


自定义变量、Nginx 访问日志转换为 json 及 Nginx gzip 压缩功能(二)


三、Nginx 的压缩功能

Nginx 支持对指定类型的文件进行压缩然后传输给客户端,还可以设置压缩比例,压缩后的文件比原文件小,一定程度上有利于降低出口宽带的利用率,降低企业的IT资源,不会占用相应的 CPU 资源。

Nginx 对文件的压缩功能是依赖于模块 ngx_http_gzip_module,官方文档:https://nginx.org/en/docs/http/ngx http gzip module.html

配置指令如下:

启用或者禁用 gzip 压缩,默认关闭

gzip on| off;

压缩比由低到高由1到9,默认为1,压缩效果最好,推荐3或者4

gzip_comp_level level;

禁用 IE6 gzip 功能

gzip_disable “MSIE[1-6]\.”

gzip 压缩的最小的文件,小于设置值的文件将不会被压缩

gzip_min_length 1k;

启用压缩功能时,协议默认的最小版本为 HTTP/1.1

gzip_http_version 1.0 | 1.1;

例如打开 jd.com,如图协议都为1.1

image.png

指定 nginx 服务需要向服务器申请的缓存空间默认个数*大小,默认32 4K|16 8K,该大小可以设置

gzip_buffers number size

指明仅对哪些类型的资源执行压缩操作,默认为 gzip_ types text/html,不用显示指示,否则出错

gzip_types mine-type...

想要查看压缩类型的,可以输入代码vim /apps/nginx/conf/mime.types寻找

如果启用压缩,是否在响应报文首部插入“Vary:Accept-Encoding”

gzip_vary on |off  默认是 off


四、测试压缩功能

接下来重启 nginx 并进行访问测试压缩功能  

在端口中输入vim/apps/nginx/conf/conf.d/linux39-pc.conf

(注意:可以放在全局变量或者对 server 生效)

以下放到全局中:输入

vim /apps/nginx/conf/nginx.conf

进入后找到 server{},在server{} 模块上方添加

gzip on;  //开启压缩

gzip_buffers 128 4k;   //压缩缓存

gzip_comp_level 5;

gzip_min_length 1k;

gzip_types text/plain application/javascript application/x-javascript text/cssapplication/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;

gzip_vary on;

添加完后退出进行 reload,输入

/apps/nginx/sbin/nginx -s reload

然后进行测试,给 nginx 两个文件,一个小于1k,一个大于1k,先进入 pc 端配置将资源限制注释掉:

autoindex on;

autoindex_exact_size off;

autoindex_localtime on;

limit_rate 20k;

limit_except GET{

deny all;

}

退出后输入 cd/data/nginx/html/pc/download/

ll -h /var/log/

在结果中找到一个小于1k的文件然后拷贝,输入

cp /var/log/vmware-network.9.log ./1.log

而我们设置的是小于1k则去除,所以现在尝试访问浏览器magedu.net/download/1.log

没有显示内容,但是可以看到正在下载

image.png

想要信息在页面上显示,就要修改默认的文本类型,让浏览器以文本的方式进行加载

输入vim /apps/nginx/conf/conf.d/linux39-pc.conf

进入后找到 location /download{} 模块,在 root /data/nginx/html/pc 下添加

default_type text/html

index index.html;

退出后输入

ll

mv 1.log 1.html

/apps/nginx/sbin/nginx -s reload

再来访问浏览器,输入网址 magedu.net/download/1.html

结果显示如图

image.png

再来测试大于1k的文件,输入

ll -h/opt/

结果中找到为488k 的文件 access_json.log

将文件拷贝,输入

scp /opt/access_json.log 172.20.0.101

此外提示:若没有大文件,可以对小文件进行追加,例如对刚才的文件进行如下操作

cp 1.html  2.html

cat 1.html >> 2.html

cat 1.html >> 2.html

cat 1.html >> 2.html

cat 1.html >> 2.html

反复追加然后输入 ll -h 进行查看,可以看到结果2.html大小变成4k

试着访问 2.html 有没有效果,访问网址 magedu.net/download/2.html

结果如图

image.png

大小为612B,如果不压缩呢?试着在配置中注释掉代码 gzip on 或者换成 gzip off

然后退出将 nginx 进行 reload,再来刷新页面

image.png

变成了4.3kb

如果想访问头部信息,输入 curl --head http://www.magedu.net/download/2.html

结果没有显示压缩信息

再来打开压缩文件,将配置中 gzip 打开,改为 gzip on

改成 on 后重新 reload,再访问头部信息,结果中多显示一行

Vary:Accept-Encoding 支持压缩

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
5天前
|
存储 SQL Oracle
|
5月前
|
Rust 前端开发 JavaScript
Tauri 开发实践 — Tauri 日志记录功能开发
本文介绍了如何为 Tauri 应用配置日志记录。Tauri 是一个利用 Web 技术构建桌面应用的框架。文章详细说明了如何在 Rust 和 JavaScript 代码中设置和集成日志记录,并控制日志输出。通过添加 `log` crate 和 Tauri 日志插件,可以轻松实现多平台日志记录,包括控制台输出、Webview 控制台和日志文件。文章还展示了如何调整日志级别以优化输出内容。配置完成后,日志记录功能将显著提升开发体验和程序稳定性。
235 1
Tauri 开发实践 — Tauri 日志记录功能开发
|
6天前
|
域名解析 应用服务中间件 网络安全
阿里云个人博客外网访问中断应急指南:从安全组到日志的七步排查法
1. 检查安全组配置:确认阿里云安全组已开放HTTP/HTTPS端口,添加规则允许目标端口(如80/443),授权对象设为`0.0.0.0/0`。 2. 本地防火墙设置:确保服务器防火墙未阻止外部流量,Windows启用入站规则,Linux检查iptables或临时关闭防火墙测试。 3. 验证Web服务状态:检查Apache/Nginx/IIS是否运行并监听所有IP,使用命令行工具确认监听状态。 4. 测试网络连通性:使用外部工具和内网工具测试服务器端口是否开放,排除本地可访问但外网不可的问题。 5. 排查DNS解析:确认域名A记录指向正确公网IP,使用`ping/nslookup`验证解析正
38 2
|
13天前
|
运维 监控 虚拟化
除了实时性能监控,Hyper-V还支持日志记录和警报功能你知道吗?
Hyper-V不仅支持实时性能监控,还具备强大的日志记录和警报功能。通过事件查看器可访问详细的日志文件,涵盖虚拟机管理、配置及Hypervisor事件,帮助故障排查和性能分析。警报功能支持预定义和自定义规则,可通过多种方式通知管理员,确保及时响应问题,保障虚拟化环境的稳定运行。
|
3月前
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
|
3月前
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
287 3
|
5月前
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
960 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
5月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
679 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
7月前
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
6月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
81 2

热门文章

最新文章