Nginx提升性能篇 静态资源服务器(缓存)

举报
长路 发表于 2022/11/28 20:26:11 2022/11/28
【摘要】 文章目录前言Nginx缓存启用响应缓存开启Gzip压缩Location学习参考 前言 本篇博客是介绍Nginx静态资源缓存,若文章中出现相关问题,请指出! 所有博客文件目录索引:博客目录索引(持续更新) Nginx缓存 Nginx基于Proxy Store实现,使用Nginx的http_proxy模块可以实现类似于squid的缓存功能。当启用缓存时,Nginx会将相应数据保存在磁盘缓存中,只要缓存

@[toc]

前言

本篇博客是介绍Nginx静态资源缓存,若文章中出现相关问题,请指出!

所有博客文件目录索引:博客目录索引(持续更新)

Nginx缓存

Nginx基于Proxy Store实现,使用Nginx的http_proxy模块可以实现类似于squid的缓存功能。当启用缓存时,Nginx会将相应数据保存在磁盘缓存中,只要缓存数据尚未过期,就会使用缓存数据来响应客户端的请求。

设置位置:Nginx启用缓存需要在最顶层的http节点下,如:/etc/nginx/nginx.conf配置

启用响应缓存

若想启用缓存,需在 http 中使用 proxy_cache_path 指令。其第一个强制参数为用于缓存内容的本地文件系统路径,第二个强制参数为 keys_zone,定义 共享内存区(shared memory zone)的名称和大小,该共享内存用于保存缓存项目的元数据:

http {
    ...
    proxy_cache_path /data/nginx/cache keys_zone=one:10m;
}

然后,想为哪些 context 来缓存服务器的响应,就在其中使用 proxy_cache 指令,用来指定内存区的名称,即 proxy_cache_path指令中的 keys_zone 参数中的名称,此处为 one:后面的10m就会缓存的大小

http {
    ...
    # 1、proxy_cache_path:代理缓存路径,对应的keys_zone指的是之后server中使用到的参数对应是one,
    proxy_cache_path /data/nginx/cache keys_zone=one:10m;
    server {
        //2、设置proxy_cache
        proxy_cache one;
        location / {
            proxy_pass http://localhost:8000;
        }
    }
}

注意,由 keys_zone 参数指定的大小,不会限制被缓存下来的响应数据的总量。被缓存的响应和其元数据的副本一同保存在文件系统中特定的文件中,若想限制被缓存的响应数据的总量,可以在 proxy_cache_path 指令中使用 max_size 参数。

最终对于proxy_cache_path来进行优化设置:

# 后面的路径根据实际需求来进行修改
proxy_cache_path /data/to_cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m; 

开启Gzip压缩

配置在http中:

# 是否启动gzip压缩,on代表启动,off代表开启,方便文件与请求数据传输
gzip  on;

# 启用gzip压缩的最小文件,小于该设置值的文件不会压缩
gzip_min_length  10k;

# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;

#压缩的等级,数字选择范围是1-9,数字越小压缩的速度越快,消耗cpu就越大
gzip_comp_level 2;

# 进行压缩的文件类型。javascript有多种形式,对应值根据mime.types文件中找
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml application/json;

Location学习

Nginx 中 location 块配置详解

优先级顺序:

1. location =    # 精准匹配
2. location ^~   # 带参前缀匹配
3. location ~    # 正则匹配(区分大小写)
4. location ~*   # 正则匹配(不区分大小写)
5. location /a   # 普通前缀匹配,优先级低于带参数前缀匹配。
6. location /    # 任何没有匹配成功的,都会匹配这里处理

静态资源:

location ~* \.(gif|jpg|jpeg)$ {
    # 匹配所有以 .gif、.jpg 或 .jpeg 结尾的请求,不区分大小写
    # 然而,所有请求 /images/ 下的图片会被 [ config D ]  处理,因为 ^~ 到达不了这一条正则/
    [ configuration E ] 
}

参考

Nginx的静态资源缓存以及压缩

参考:Nginx优化秘籍(二)proxy_cache_path

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。