·设为首页收藏本站📧邮箱修改🎁免费下载专区🔐设置/修改密码👽群雄群聊
返回列表 发布新帖

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

414 0

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

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

默认情况下,NGINX中禁用压缩,但是根据您的安装或Linux发行版,某些设置可能会在默认的nginx.conf文件中启用。在这里,我们在NGINX配置文件中启用gzip压缩:
  1. 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 配置文件节省带宽? 如何,改进,nginx,配置,配置文件


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

首先,您可以为字体和图像设置较长的缓存过期时间,这些字体和图像可能不会经常更改(即使它们更改了,它们也通常会获得新的文件名)。在以下示例中,我们指示客户端浏览器将字体和图像在本地缓存中保留一个月:
  1. 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配置文件中http2的listen指令中包含参数:

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

您可以通过HTTP2.Pro服务验证您(或任何站点)是否支持HTTP / 2 :
如何改进 NGINX 配置文件节省带宽? 如何,改进,nginx,配置,配置文件

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

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

有几种不同的方法可以减少和优化日志记录。在这里,我们重点介绍三个。

方法1:禁用页面资源请求的日志记录
如果您不需要记录检索普通页面资源(例如图像,JavaScript文件和CSS文件)的请求,则这是一种快速简便的解决方案。您需要做的就是创建一个location与这些文件类型匹配的新块,并禁用其中的日志记录。(您也可以将此access_log指令添加到上面设置标头的代码location块中。)Cache-Control
  1. location ~* \.(?:jpg|jpeg|gif|png|ico|woff2|js|css)$ {    access_log off;}
复制代码

方法2:禁用成功请求的日志记录
这是一种更强大的方法,因为它会丢弃带有或响应代码的查询,仅记录错误。它比方法1稍微复杂一点,因为它取决于如何配置NGINX日志记录。在我们的示例中,我们使用Ubuntu Server发行版中包含的标准nginx.conf,因此,无论虚拟主机如何,所有请求都记录到/var/log/nginx/access.log中。2xx3xx

使用官方NGINX文档中的示例,让我们打开条件日志记录。创建一个变量$loggable,并将其设置为,0以使用和代码进行请求,否则设置为  。然后在指令中将该变量作为条件引用。2xx3xx1access_log

这是/etc/nginx/nginx.conf中http上下文中的原始指令:

access_log /var/log/nginx/access.log;
添加一个map块并从access_log指令中引用它:
  1. map $status $loggable {    ~^[23] 0;    default 1;}access_log /var/log/nginx/access.log combined if=$loggable;
复制代码
请注意,尽管这combined是默认的日志格式,但是在包含if参数时,您需要明确指定它。

方法3:使用缓冲最小化I / O操作
即使您要记录所有请求,也可以通过打开访问日志缓冲来最大程度地减少I / O操作。使用此指令,NGINX会等待将日志数据写入磁盘,直到填满512 KB缓冲区或自上次刷新以来经过1分钟(以先发生者为准)。

access_log /var/log/nginx/access.log combined buffer=512k flush=1m;
限制特定URL的带宽
如果服务器提供较大的文件(或较小但非常受欢迎的文件,例如表单或报表),则设置客户端下载文件的最大速度可能很有用。如果您的站点已经承受了很高的网络负载,则限制下载速度会留下更多带宽,以保持应用程序的关键部分响应。这是硬件制造商使用的非常流行的解决方案–您可能需要等待更长的时间才能为打印机下载3 GB的驱动程序,但是同时有成千上万的其他人下载您仍然可以下载。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图

您的IP:3.149.213.209,111.177.8.59,GMT+8, 2024-5-3 09:06 , Processed in 0.197309 second(s), 71 queries , Gzip On, Redis On.

Based on Discuz! W1.0 Licensed

© 2001-2024 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表