Nginx优化服务之网页压缩的实现方法

下面我将为你详细讲解“Nginx优化服务之网页压缩的实现方法”的完整攻略。

  1. 开启压缩功能

Nginx提供了gzip模块,可以将响应数据进行压缩,从而减少传输量,提升客户端访问速度。通过在Nginx配置文件中开启gzip功能即可实现网页压缩。

打开Nginx配置文件,添加以下内容:

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;

其中:

  • gzip on 表示启用gzip压缩功能。
  • gzip_min_length 1k 表示只有文件大小超过1k的文件才进行压缩。
  • gzip_buffers 4 16k 表示设置压缩缓冲区的大小。
  • gzip_http_version 1.1 表示启用HTTP/1.1协议的支持。
  • gzip_comp_level 2 表示设置压缩比例,值越大压缩比例越高,但是消耗的CPU资源也越多。
  • gzip_types text/plain application/x-javascript text/css application/xml 表示只有文本文件、JavaScript文件、CSS文件和XML文件才会进行压缩。

  • 对压缩结果进行缓存

为了提高响应速度,可以对压缩后的缓存进行缓存。这可以通过存放于内存中的缓存机制实现。具体的实现方法如下:

打开Nginx配置文件,添加以下内容:

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;

# 设置缓存大小,单位为k
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_valid 200 60m;
proxy_cache_valid 404 1m;
proxy_cache_bypass $http_pragma;
proxy_cache_revalidate on;

server {
    ...
    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_pragma;
        proxy_cache my_cache;
    }
}

其中:

  • proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m; 表示设置缓存路径和大小。
  • proxy_cache_key "$scheme$request_method$host$request_uri"; 表示设置缓存键。
  • proxy_cache_valid 200 60m; 表示设置缓存时间,对于200状态码的响应数据,缓存时间为60分钟。
  • proxy_cache_valid 404 1m; 表示对于404状态码的响应数据,缓存时间为1分钟。
  • proxy_cache_bypass $http_pragma; 用于绕过缓存。
  • proxy_cache_revalidate on; 表示允许客户端主动验证缓存。

  • 示例说明

以下是两个示例,演示了如何使用Nginx压缩和缓存网页响应数据。

示例1

现有一个静态HTML文件,路径为 /var/www/html/index.html,需要对该页面进行gzip压缩和缓存。

打开Nginx配置文件,添加以下内容:

server {
    ...
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript text/css application/xml;

    location /index.html {
        root /var/www/html;
        expires 1d;
        add_header Cache-Control public;
        add_header ETag "";
        tcp_nodelay on;
        proxy_cache_bypass $http_pragma;
        proxy_cache my_cache;
    }
}

以上配置将对/var/www/html/index.html进行gzip压缩和缓存。通过expiresadd_header设置缓存时间和缓存控制,加速网站的访问速度。

示例2

现有一个PHP动态页面,路径为 /var/www/html/index.php,需要对该页面进行gzip压缩和缓存。

打开Nginx配置文件,添加以下内容:

server {
    ...
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript text/css application/xml;

    location ~ \.php$ {
        root /var/www/html;
        expires 1d;
        add_header Cache-Control public;
        add_header ETag "";
        tcp_nodelay on;
        fastcgi_pass 127.0.0.1:9000;
        include fastcgi_params;
        proxy_cache_bypass $http_pragma;
        proxy_cache my_cache;
    }
}

以上配置将对/var/www/html/index.php进行gzip压缩和缓存。由于该页面是动态生成的,因此使用fastcgi_pass指示Nginx将请求转发到本地的FastCGI进程处理。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nginx优化服务之网页压缩的实现方法 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • nginx 配置301转发

    学习nginx 推荐 http://www.nginx.cn/nginx-how-to    1. 设置域名解析     daijun.me 指向 234.33.22.21   2.主机234.33.22.21 nginx配置 转发  server { listen 80; server_name daijun.me www.daijun.me; acces…

    Nginx 2023年4月12日
    00
  • PHP程序员玩转Linux系列 nginx初学者引导

    为了让初学者更好地入门Linux和Nginx,我们推出了“PHP程序员玩转Linux系列 nginx初学者引导”的攻略,其中包含以下两条示例说明: 示例一:使用Nginx搭建简单的Web服务器 步骤一:安装Nginx 在Ubuntu系统中,可以通过以下命令来安装Nginx: sudo apt-get update sudo apt-get install n…

    Nginx 2023年5月16日
    00
  • [Nginx] nginx屏蔽某个url和指定参数访问

    有个地址总是被人恶意访问,可以配置nginx屏蔽这个请求 域名/chatIndex?kefu_id=l5702123&ent_id=324 location ~ / { if ( $query_string ~* ^(.*)?kefu_id=l5702123&ent_id=324 ){ return 403; } } 这样对方的请求全都变成4…

    2023年4月9日
    00
  • 负载均衡中间件(一)Nginx高性能负载均衡器 linux C++ 通讯架构(一)nginx安装、目录、进程模型

      Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/PO3)代理服务器,并在一个BSD协议下发行,可以在UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等操作系统中运行。 由俄罗斯的码农lgor Sysover所开发,最初供俄国大型的入口网站及搜寻引擎Rambler使用。…

    Nginx 2023年4月12日
    00
  • nginx读取图片没有权限

    场景是这样的,我们项目中上传图片到linux服务器后,保存图片存储路径和网络访问路径。app中用数据库返回的 图片访问路径来访问图片(nginx通过nfs方式读取图片)。但是访问不到。要手动 chmod  777 才能访问。 这显然不合理,通过修改weblogic 的startWeblogic.sh 中的unsum   -117  改为 -022就ok了。 …

    Nginx 2023年4月9日
    00
  • Ubuntu下搭建与配置Nginx服务

    下面是Ubuntu下搭建与配置Nginx服务的完整攻略,包含两条示例说明: 确定Ubuntu版本并安装Nginx 首先,要确定已经安装了Ubuntu,可以通过命令lsb_release -a查看版本。然后,使用以下命令安装Nginx: 更新Ubuntu软件包列表:sudo apt-get update 安装Nginx:sudo apt-get install…

    Nginx 2023年5月16日
    00
  • nginx服务警告conflicting server name “bbs.xxxxxx.com” on 0.0.0.0:80, ignored

    在修改nginx服务的配置文件后检查发现如下错误: 排查方法如下: 排查后发现www.conf文件中错误指定了域名并且和bbs.conf中相同 解决:在www.conf中修改  

    Nginx 2023年4月12日
    00
  • 记录一次nginx启动失败的解决过程

    下面是关于记录一次nginx启动失败的解决过程的完整攻略。 问题描述 最近,在启动nginx时,出现了以下错误: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Addres…

    Nginx 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部