如何使用nginx的HttpGzipModule在Debian Jessie上保存流量

在本教程中,我将介绍如何在nginx Web服务器(Debian Jessie)上配置HttpGzipModuleHttpGzipModule允许nginx压缩文件并将其传递给可以处理大多数现代浏览器所执行的压缩内容的客户端(例如浏览器)。 使用HttpGzipModule ,您可以将HTML,CSS,Javascript,文本或XML文件压缩到大约。 20-30%的原始尺寸,从而节省您的服务器流量,使您的调制解调器用户更快乐。

压缩文件导致服务器负载略高,但根据我的经验,这可以通过客户端到您的服务器的连接时间减少很多来弥补。 例如,需要七秒钟下载未压缩的HTML文件的调制解调器用户现在可能只需要两秒钟的时间才能使用相同但压缩的文件。

通过使用HttpGzipModule,您不必担心您会排除使用旧版浏览器无法处理压缩内容的用户。 浏览器在传输任何文件之前与服务器进行协商,如果浏览器无法处理压缩内容,则服务器将传送未压缩的文件。

1初步说明

我假设你的Debian服务器上有一个工作的nginx设置,例如本教程中所示: 在Debian 8上使用PHP(作为PHP-FPM)和MariaDB(LEMP)安装Nginx

2配置HttpGzipModule

打开/etc/nginx/nginx.conf

nano /etc/nginx/nginx.conf

您会发现gzip压缩已经启用(在http {}部分):

[...]
http {
[...]
##
# Gzip Settings
##

gzip on;
gzip_disable "msie6";

[...] } [...]

gzip上 启用gzip压缩。

gzip_disable“MSIE [1-6] \。(?!。* SV1)”; 禁用不支持它的浏览器的gzip压缩(在本例中为版本6 SV1之前的MS Internet Explorer)。

当然,我们可以微调这个配置(您可以在http://nginx.org/en/docs/http/ngx_http_gzip_module.html上找到可能的配置指令列表):

gzip_http_version 1.1; - 这为HTTP请求版本1.1启用了gzip压缩。 由于Content-Length标题未设置,这将使Keepalives不可能使用版本1.0。

gzip_vary on; - 设置响应头Vary:Accept-Encoding 。 一些代理有一个错误,它们将压缩内容提供给不支持它的浏览器。 通过设置Vary:Accept-Encoding标题,您可以指示代理存储压缩和未压缩版本的内容。

gzip_comp_level 6; - 这是压缩级别(1到9之间),其中1是最小压缩(最快),9是最大(最慢)。

gzip_proxied任何 - 这将配置来自代理的请求应如何处理。 任何方式都可以对所有请求进行压缩。

gzip_types text / plain text / html text / css application / json application / x-javascript text / xml application / xml application / xml + rss text / javascript application / javascript text / x-js; - 这告诉nginx要压缩的文件类型( 文本/ HTML总是压缩的)。 由于每个服务器上的Javascript文件可能有不同的文件类型,我已经包含了几种可能的Javascript MIME类型(与XML相同)。

gzip_buffers 16 8k; - 这将分配压缩缓冲区的数量和大小。 默认是gzip_buffers 4 4k;gzip_buffers 4 8k; ,但是我增加了这个值,以确保可以压缩大的Javascript或CSS文件。

所以我的最终配置如下所示:

[...]
http {
    [...]
    gzip  on;
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_comp_level 6;
    gzip_proxied any;
    gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
    gzip_buffers 16 8k;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    [...]
}
[...]

重新加载nginx:

service nginx reload

3测试

要测试您的配置是否正常工作,您可以使用Firefox或Google Chrome中的开发工具,并通过Firefox访问文本文件(例如静态HTML页面)。 在HTTP Headers输出中,您现在应该看到客户端(Firefox)发送了Accept-Encoding:gzip,deflate标头来告诉服务器它接受格式为gzipdeflate的压缩内容 ; 服务器应该压缩文件并使用Content-Encoding:gzip标头发送(如本示例所示,nginx还会设置Vary:Accept-Encoding标题):

4链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

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

支付宝扫一扫打赏

微信扫一扫打赏