1. Home
  2. 主机

如何改进 NGINX 配置文件节省带宽?

海军上将威廉·麦克雷文说,如果你想改变世界,通过使你的床开始。有时候,小事情可能会产生很大的影响-无论是早上铺床还是对网站的HTTP服务器配置进行少量更改。

这看起来像是夸大其词?2020年的头几个月,我们对世界上正常和合理事物的所有定义都花光了。由于COVID‑19大流行,地球上将近一半的人口被困在自己的家中,因此互联网已成为他们交流,娱乐,购买食物,工作和教育的唯一方式。互联网每周都比以往任何时候都拥有更高的网络流量和服务器负载。根据BroadbandNow在3月25日发布的报告,“在我们分析的200个城市中,有88个(44%)在过去一周内经历了一定程度的网络降级,而之前的10个星期是这样”。

诸如Netflix和YouTube之类的主要媒体平台都在限制其传输质量,以保护网络链接,使人们有更多带宽可用于工作,与家人交流或在学校上虚拟课。但这还不够,因为网络质量逐渐恶化,许多服务器变得超负荷。

您可以通过优化网站来提供帮助

如果您拥有网站并可以管理其HTTP服务器配置,则可以提供帮助。进行一些小的更改可以减少用户生成的网络带宽以及服务器的负载。这是双赢的局面:如果您的站点当前负载沉重,则可以减少它,从而为更多的用户提供服务,并可能降低成本。如果负载不是很高,则更快的负载可以改善用户的体验(有时会积极影响您在Google搜索结果中的排名)。

如果您的应用程序每个月有数百万用户,或者是一个包含烘焙食谱的小博客,那都没有关系–您消除的每千字节网络流量都释放了容量,供那些迫切需要在线检查医学检查结果或创建包裹标签的人使用给亲戚寄一些重要的东西

在此博客中,我们介绍了您可以对NGINX配置进行的一些简单但功能强大的更改。举一个真实的例子,我们使用我的朋友Rogalove的电子商务网站,该公司是我居住的波兰一家生态化妆品制造商。该网站是运行NGINX 1.15.9作为其Web服务器的相当标准的WooCommerce安装。为了进行计算,我们假设该网站每天获得100个唯一身份用户,其中30%的用户为固定访问者,并且每个用户在会话期间平均访问4个页面。

这些技巧是您可以立即采取的简单步骤,以提高性能并减少网络带宽。如果您要处理大量流量,则可能需要实施更复杂的更改以产生重大影响,例如,调整操作系统和NGINX,提供正确的硬件容量,以及(最重要的是)启用和调整缓存。查看这些博客文章以获取详细信息:

  • 调整NGINX的性能
  • 性能调优–技巧与窍门
  • 10倍应用程序性能的10个技巧
  • 在裸机服务器上部署NGINX Plus的规模调整指南
  • NGINX和NGINX Plus缓存指南
  • 使用NGINX进行微缓存的好处

为HTML,CSS和JavaScript文件启用Gzip压缩

如您所知,用于在现代网站上构建页面的HTML,CSS和JavaScript文件可能非常庞大。在大多数情况下,Web服务器可以即时压缩这些和其他文本文件,以节省网络带宽。

查看Web服务器是否正在压缩文件的一种方法是使用浏览器的开发人员工具。对于许多浏览器,您可以使用F12键访问这些工具,并且相关信息位于“ 网络”选项卡上。这是一个例子:

如何改进 NGINX 配置文件节省带宽?

如您在左下方所见,没有压缩:文本文件大小为1.15 MB,并且传输了很多数据。

默认情况下,NGINX中禁用压缩,但是根据您的安装或Linux发行版,某些设置可能会在默认的nginx.conf文件中启用。在这里,我们在NGINX配置文件中启用gzip压缩:

gzip on;gzip_types application/xml application/json text/css text/javascript application/javascript;gzip_vary on;gzip_comp_level 6;gzip_min_length 500;

如您在以下屏幕截图中所见,压缩后的数据传输量仅为260 KB,减少了约80%!对于页面上的每个新用户,您可以节省大约917 KB的数据传输。对于我们的WooCommerce安装每天62 MB,每月1860 MB。

如何改进 NGINX 配置文件节省带宽?

设置缓存头

当浏览器检索网页的文件时,它会将副本保留在本地磁盘缓存中,这样,当您再次访问该页面时,它不必从服务器重新获取文件。每个浏览器都使用自己的逻辑来决定何时使用文件的本地副本以及何时在服务器上更改了文件时再次获取它。但是,作为网站所有者,您可以在发送的HTTP响应中设置缓存控制和过期标头,以提高浏览器的缓存行为的效率。从长远来看,您会收到很多不必要的HTTP请求。

首先,您可以为字体和图像设置较长的缓存过期时间,这些字体和图像可能不会经常更改(即使更改,它们通常也会获得新的文件名)。在以下示例中,我们指示客户端浏览器将字体和图像在本地缓存中保留一个月:

location ~* \.(?:jpg|jpeg|gif|png|ico|woff2)$ {expires 1M;add_header Cache-Control "public";}

启用HTTP / 2协议支持

HTTP / 2是用于服务网页的下一代协议,旨在更好地利用网络和主机服务器。根据Google文档,它可以更快地加载页面:

生成的协议对网络更友好,因为与HTTP / 1.x相比,使用的TCP连接更少。这意味着与其他流量的竞争减少,连接寿命更长,从而可以更好地利用可用网络容量。

NGINX 1.9.5和更高版本(以及NGINX Plus R7和更高版本)支持HTTP / 2协议,您所需要做的就是启用它。为此,请在您的NGINX配置文件中http2listen指令中包含参数:

listen 443 ssl http2;

请注意,在大多数情况下,您还需要启用TLS才能使用HTTP / 2。

您可以通过HTTP2.Pro服务验证您(或任何站点)是否支持HTTP / 2 :

如何改进 NGINX 配置文件节省带宽?

优化记录

让自己喝一杯自己喜欢的饮料,舒适地坐着,然后思考:您上次查看访问日志文件是什么时候?上周,上个月,从来没有?即使您将其用于网站的日常监控,您也可能只关注错误( Four hundred Five hundred状态代码,等等),不是成功的请求。

通过减少或消除不必要的日志记录,可以节省服务器上的磁盘存储、CPU和I/O操作。这不仅使您的服务器更快一点——如果您部署在云环境中,释放的I/O吞吐量和CPU周期可能是另一个虚拟机或驻留在同一物理机上的应用程序的救生器。

有几种不同的方法来减少和优化日志记录。这里我们强调三。

方法1:禁用对页面资源请求的日志记录

这是一个简单快捷的解决方案,如果您不需要记录检索普通页面资源的请求,例如图像、JavaScript文件和CSS文件。你需要做的就是创建一个新的位置与这些文件类型匹配的块,并禁用其内部的日志记录。(也可以添加这个访问日志指令到位置块在上面我们设置的地方缓存控制标题)

location ~* \.(?:jpg|jpeg|gif|png|ico|woff2|js|css)$ {访问日志注销;}

方法2:禁用成功请求的日志记录

这是一个更强大的方法,因为它用一个 TwoXX ThreeXX响应代码,只记录错误。它比方法1稍微复杂一些,因为它取决于如何配置NGNX日志记录。在我们的例子中,我们使用标准。nginx.conf包含在Ubuntu服务器分发中,这样无论虚拟主机,所有请求都记录到/var/log/nginx/access.log .

使用一个例子官方NGIX文档让我们打开条件日志。创建变量可伐美元并将其设置为 Zero请求与 TwoXX ThreeXX响应代码,以及以其他方式 One. 然后将此变量引用为访问日志指令

这里是最初的指令HTTP协议语境在/etc/nginx/nginx.conf :

Access日志/VAR/Log/NGNIX/Access .log;

添加一个地图阻止和引用它访问日志指令:

map $status $loggable { ~^[23] 0;缺省1;}access_log /var/log/nginx/access.log combined if=$loggable;

注意,虽然组合的是默认日志格式,您需要在包含如果参数

方法3:通过缓冲最小化I/O操作

即使您想记录所有请求,也可以通过打开访问日志缓冲来最小化I/O操作。使用此指令,NGiNX等待将日志数据写入磁盘。512 KB缓冲区已满,或自上次刷新以来已过1分钟,无论哪一次发生。

access_log /var/log/nginx/access.log combined buffer=512k flush=1m;

特定URL的带宽限制

如果服务器提供更大的文件(或更小但非常流行的文件,如窗体或报表),则可以设置客户端可以下载的最大速度。如果您的站点已经经历了高网络负载,则限制下载速度会占用更多的带宽来响应应用程序的关键部分。这是硬件制造商使用的一种非常流行的解决方案,您可以等待更长的时间来下载。3GB你的打印机的驱动程序,但与成千上万的其他人同时下载,你仍然可以得到你的下载。γ

使用限速率指令来限制特定URL的带宽。这里我们限制每个文件下的传输速率下载至50 KB每秒

位置/下载/ {极限速度50K;}

您可能还希望仅对较大的文件进行限制,您可以使用限界后指令。在这个例子中前500 KB每一个文件(从任何目录)都是在没有速度限制的情况下传输的。每秒50 KB. 这使得网站的关键部分更快地递送,同时减慢其他部分。

位置/ {界限在500 K以后;极限速度50K;}

注意,速率限制适用于浏览器和NGNX之间的个别HTTP连接,因此不要阻止用户通过使用下载管理器来绕过速率限制。

最后,还可以限制与服务器的并发连接的数量或请求率。详情请参阅文档 .

概要

我们希望这五个技巧有助于优化网站的性能。速度和带宽增益因网站而异。即使调整你的NGNX配置似乎并没有显着释放带宽或提高速度,成千上万的网站单独调整其NGNIX配置的整体影响也增加了。我们的全球网络被更有效地使用,这意味着最关键的服务在需要的时候被交付。

如果你在NGIX网站上有任何问题,我们来帮助你!在科威特19大流行期间,NGIX员工和社区正在监测NGINX通道在堆栈溢出 一并尽可能快地回答问题和请求。

如果你为一个组织在流行病的前线工作,并有先进的需求,你可能有资格获得多达五个免费的NGNX-Plus许可证,以及更高级别的F5 DNS负载平衡器云服务。见科威特19影响网站的免费资源详情

也检查一下博客,看看其他网站的下载情况。提高网站性能的简单方法从NGNX和F5免费资源。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

Contact Us

286604026

在线咨询:点击这里给我发消息

邮件:286604026@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

ajax-loader