如何在 Ubuntu 14.04 上为 Nginx 添加 gzip 模块

这篇具有很好参考价值的文章主要介绍了如何在 Ubuntu 14.04 上为 Nginx 添加 gzip 模块。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

网站加载速度取决于浏览器需要下载的文件大小。减小传输文件的大小不仅可以加快网站加载速度,还可以减少需要支付带宽费用的用户的成本。

gzip 是一款流行的数据压缩程序。您可以配置 Nginx 使用 gzip 对其提供的文件进行实时压缩。这些文件在传输到浏览器时会被支持的浏览器解压缩,不会有任何损失,但可以减少 Web 服务器和浏览器之间传输的数据量。

由于压缩的工作原理以及 gzip 的工作方式,某些文件比其他文件更容易压缩。例如,文本文件通常可以压缩得非常小,最终大小通常会减小两倍以上。另一方面,像 JPEG 或 PNG 文件这样的图像已经通过其自身的压缩方式进行了压缩,再次使用 gzip 进行压缩几乎不会产生任何效果。压缩文件会占用服务器资源,因此最好只压缩那些在结果中可以显著减小大小的文件。

在本指南中,我们将讨论如何配置安装在 Ubuntu 14.04 服务器上的 Nginx,以利用 gzip 压缩来减小发送给网站访问者的内容大小。

先决条件

要按照本教程操作,您需要:

  • 一个具有 sudo 非根用户的 Ubuntu 14.04 服务器

  • 已按照《在 Ubuntu 14.04 上安装 Nginx》教程在服务器上安装了 Nginx

步骤 1 —— 创建测试文件

在这一步中,我们将在默认的 Nginx 目录中创建几个测试文件,以测试 gzip 的压缩效果。

为了决定通过网络传输哪种类型的文件,Nginx 不会分析文件内容,因为这样做速度不够快。相反,它只会查找文件扩展名来确定其 MIME 类型,这表示文件的用途。

由于这种行为,测试文件的内容是无关紧要的。通过适当命名文件,我们可以欺骗 Nginx,使其认为一个完全空的文件是图像,另一个文件是样式表,等等。

在我们的配置中,Nginx 不会压缩非常小的文件,因此我们将创建确切大小为 1 千字节的测试文件。这将使我们能够验证 Nginx 是否在应该压缩的地方使用了压缩,对一种类型的文件进行压缩,而对其他类型的文件不进行压缩。

使用 truncate 命令在默认的 Nginx 目录中创建名为 test.html 的 1 千字节文件。扩展名表示它是一个 HTML 页面。

sudo truncate -s 1k /usr/share/nginx/html/test.html

让我们以相同的方式创建更多的测试文件:一个 jpg 图像文件,一个 css 样式表,和一个 js JavaScript 文件。

sudo truncate -s 1k /usr/share/nginx/html/test.jpg
sudo truncate -s 1k /usr/share/nginx/html/test.css
sudo truncate -s 1k /usr/share/nginx/html/test.js

步骤 2 —— 检查默认行为

下一步是检查 Nginx 在新安装中对压缩的行为,以及我们刚刚创建的文件。

让我们检查 HTML 文件 test.html 是否使用压缩进行服务。该命令请求从我们的 Nginx 服务器获取文件,并指定可以通过使用 HTTP 头 (Accept-Encoding: gzip) 来提供 gzip 压缩内容。

curl -H "Accept-Encoding: gzip" -I http://localhost/test.html

作为响应,您应该看到几个 HTTP 响应头:


HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Tue, 19 Jan 2016 20:04:12 GMT
Content-Type: text/html
Last-Modified: Tue, 04 Mar 2014 11:46:45 GMT
Connection: keep-alive
Content-Encoding: gzip

在最后一行,您可以看到 Content-Encoding: gzip 头。这告诉我们该文件已使用 gzip 压缩发送。这是因为在 Ubuntu 14.04 上,Nginx 在默认设置下安装后会自动启用 gzip 压缩。

但是,默认情况下,Nginx 只会压缩 HTML 文件。在新安装中,其他每个文件都将以未压缩的方式提供。为了验证这一点,您可以以相同的方式请求我们的测试图像 test.jpg

curl -H "Accept-Encoding: gzip" -I http://localhost/test.jpg

结果应该与之前略有不同:


HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Tue, 19 Jan 2016 20:10:34 GMT
Content-Type: image/jpeg
Content-Length: 0
Last-Modified: Tue, 19 Jan 2016 20:06:22 GMT
Connection: keep-alive
ETag: "569e973e-0"
Accept-Ranges: bytes

输出中没有 Content-Encoding: gzip 头,这意味着该文件未经压缩提供。

您可以以相同的方式重复测试样式表 test.css

curl -H "Accept-Encoding: gzip" -I http://localhost/test.css

再次,输出中没有提到压缩。


HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Tue, 19 Jan 2016 20:20:33 GMT
Content-Type: text/css
Content-Length: 0
Last-Modified: Tue, 19 Jan 2016 20:20:33 GMT
Connection: keep-alive
ETag: "569e9a91-0"
Accept-Ranges: bytes

步骤 3 — 配置 Nginx 的 gzip 设置

下一步是配置 Nginx 不仅提供压缩的 HTML 文件,还可以为其他可以受益于压缩的文件格式提供服务。

要更改 Nginx 的 gzip 配置,请打开主 Nginx 配置文件,使用 nano 或您喜欢的文本编辑器。

sudo nano /etc/nginx/nginx.conf

找到 gzip 设置部分,看起来像这样:

. . .
##
# `gzip` 设置
#
#
gzip on;
gzip_disable "msie6";

# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
. . .

您可以看到,默认情况下,gzip 压缩是通过 gzip on 指令启用的,但是其他几个附加设置都被注释掉了,使用了 # 注释符。我们将对此部分进行几处更改:

  • 通过取消注释所有被注释的行(即删除行首的 #)来启用附加设置
  • 添加 gzip_min_length 256; 指令,告诉 Nginx 不要压缩小于 256 字节的文件。这是因为非常小的文件几乎不受压缩的好处。
  • gzip_types 指令后附加其他文件类型,包括 web 字体、ico 图标和 SVG 图像。

应用这些更改后,设置部分应如下所示:

. . .
##
# `gzip` 设置
#
#
gzip on;
gzip_disable "msie6";

gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
. . .

保存并关闭文件以退出。

要启用新配置,请重新启动 Nginx。

sudo service nginx restart

步骤 4 — 验证新配置

下一步是检查配置更改是否按预期工作。

我们可以像在步骤 2 中一样进行测试,通过在每个测试文件上使用 curl 并检查输出中的 Content-Encoding: gzip 标头来进行测试。

curl -H "Accept-Encoding: gzip" -I http://localhost/test.html
curl -H "Accept-Encoding: gzip" -I http://localhost/test.jpg
curl -H "Accept-Encoding: gzip" -I http://localhost/test.css
curl -H "Accept-Encoding: gzip" -I http://localhost/test.js

现在只有 test.jpg,即图像文件,应保持未压缩状态。在所有其他示例中,您应该能够在输出中找到 Content-Encoding: gzip 标头。

如果是这种情况,您已成功配置了 Nginx 中的 gzip 压缩!

结论

更改 Nginx 配置以充分利用 gzip 压缩很容易,但好处可能是巨大的。不仅带宽有限的访问者将更快地接收网站,Google 也会因网站加载更快而感到高兴。速度正在成为现代网络的重要组成部分,而使用 gzip 是改进速度的一大步。文章来源地址https://www.toymoban.com/news/detail-858338.html

到了这里,关于如何在 Ubuntu 14.04 上为 Nginx 添加 gzip 模块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何在 Ubuntu 12.04 上添加交换空间

    本文涵盖的 Ubuntu 版本已不再受支持。如果您目前正在运行 Ubuntu 12.04 服务器,我们强烈建议升级或迁移到受支持的 Ubuntu 版本: 升级到 Ubuntu 14.04 从 Ubuntu 14.04 升级到 Ubuntu 16.04 将服务器数据迁移到受支持的版本 原因: Ubuntu 12.04 已于 2017 年 4 月 28 日到达生命周期终点(EOL)

    2024年04月10日
    浏览(25)
  • 在Ubuntu 16.04上如何添加交换空间

    介绍 在增加服务器的响应速度并防止应用程序出现内存不足错误的最简单方法之一是添加一些交换空间。在本指南中,我们将介绍如何向 Ubuntu 16.04 服务器添加交换文件。 交换空间 是硬盘上被指定为操作系统可以临时存储无法再放入 RAM 中的数据的区域。基本上,这使您能够

    2024年04月10日
    浏览(28)
  • 如何在 Ubuntu 20.04 上安装 Nginx

    前些天发现了一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站。 介绍 Nginx是世界上最受欢迎的 Web 服务器之一,负责托管互联网上一些最大和流量最高的网站。它是一个轻量级的选择,可以用作 Web 服务器或反向代

    2024年01月25日
    浏览(38)
  • 如何在 Ubuntu 22.04 上安装、配置、使用 Nginx?

    Nginx是一款高性能的开源Web服务器,同时也充当反向代理服务器和负载均衡器。它设计简洁,效率出众,以处理大量并发连接而闻名,成为许多网站和应用的首选服务器软件。在本文中,我们将深入介绍如何在Ubuntu 22.04上安装、配置和管理Nginx,以便您能更好地利用其强大功能

    2024年03月20日
    浏览(31)
  • 在Ubuntu 12.04和CentOS 6上如何添加和删除用户

    简介 在新的 Linux 服务器上,你应该知道如何添加和删除用户是最基本的任务之一。当你创建一个新系统时,通常(比如在 DigitalOcean Droplets 上)默认只会给你 root 账户。 虽然以 root 用户身份运行可以赋予你很大的权力和灵活性,但也是危险的,可能会造成破坏。通常最好的

    2024年04月11日
    浏览(23)
  • Nginx重新编译并添加模块

            作用:一是检查所需模块是否已安装,二是将configure arguments: 后面的参数复制出来并保存,因为等会重新编译时还需将这些模块一同添加进去。         进入Nginx源码包目录下,执行make clean指令,清除历史编译。         使用./configure --help指令查询需要配置的参

    2024年02月05日
    浏览(28)
  • nginx添加nginx-sticky-module模块步骤

    ip_hash 根据客户端ip将请求分配到不同的服务器上. sticky 根据服务器个客户端的cookie,客户端再次请求是会带上此cookie,nginx会把有次cookie的请求转发到颁发cookie的服务器上. 1. 下载sticky 2. 编译nginx 3. 查看模块是否被载入 如下图表表示添加成功 4. 使用 name: cookie的名称 expire: 有效

    2024年02月13日
    浏览(25)
  • Ubuntu18.04安装Qt5.14.2

    一、安装 第一步: 官网Index of /archive/qt 下载安装包, 或者国内网址下载 https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.9/5.9.0/ 我安装的是QT5.14.2 中的 qt-opensource-linux-x64-5.14.2.run ; 第二步:ctrl+T 打开终端输入命令: 第三步:开始安装 Qt(安装路径有下列两种方式) ,终端输入命令

    2024年02月11日
    浏览(35)
  • 【Nginx04】Nginx学习:HTTP核心模块(一)简单搭建

    前面就说过了,HTTP 模块是整个 Nginx 中最核心的模块。在这其中,它又有一部分最核心的模块,其实也就是在编译安装的时候,我们不装任何扩展就自带的模块。这一部分模块就像是基本的 PHP 语法一样,是最基础的,也是我们最需要重点掌握的内容。 今天先入个门,搭起简

    2024年02月12日
    浏览(43)
  • 联想小新14Pro Ubuntu20.04 键盘失灵

    设备配置 : 联想小新14Pro Ubuntu 20.04.1 问题 : 触控板良好 键盘失灵 解决办法 可以通过外接USB键盘方法解决 可以按照下面的操作来恢复触控板功能 需要知道的信息: sudo vi /etc/default/grub 使用该条命令可以配置grub界面信息 GRUB_TIMEOUT=0 将后面的0修改成10(这样在grud界面可以停

    2024年02月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包