千家信息网

nginx页面缓存怎么配置

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要介绍了nginx页面缓存怎么配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇nginx页面缓存怎么配置文章都会有所收获,下面我们一起来看看吧。nginx之页
千家信息网最后更新 2025年02月02日nginx页面缓存怎么配置

这篇文章主要介绍了nginx页面缓存怎么配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇nginx页面缓存怎么配置文章都会有所收获,下面我们一起来看看吧。

nginx之页面缓存

1.指令说明

proxy_cache_path

语法:proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time] [max_size=size];

默认值:none

使用字段:http

指令指定缓存的路径和一些其他参数,缓存的数据存储在文件中,并且使用代理url的哈希值作为关键字与文件名。levels参数指定缓存的子目录数,例如:

proxy_cache_path /data/nginx/cache levels=1:2  keys_zone=one:10m;

文件名类似于:

/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c

levels指定目录结构,可以使用任意的1位或2位数字作为目录结构,如 x, x:x,或x:x:x 例如: "2", "2:2", "1:1:2",但是最多只能是三级目录。

所有活动的key和元数据存储在共享的内存池中,这个区域用keys_zone参数指定。one指的是共享池的名称,10m指的是共享池的大小。

注意每一个定义的内存池必须是不重复的路径,例如:

proxy_cache_path /data/nginx/cache/one  levels=1   keys_zone=one:10m;proxy_cache_path /data/nginx/cache/two  levels=2:2  keys_zone=two:100m;proxy_cache_path /data/nginx/cache/three levels=1:1:2 keys_zone=three:1000m;

如果在inactive参数指定的时间内缓存的数据没有被请求则被删除,默认inactive为10分钟。一个名为cache manager的进程控制磁盘的缓存大小,它被用来删除不活动的缓存和控制缓存大小,这些都在max_size参数中定义,当目前缓存的值超出max_size指定的值之后,超过其大小后最少使用数据(lru替换算法)将被删除。内存池的大小按照缓存页面数的比例进行设置,一个页面(文件)的元数据大小按照操作系统来定,如freebsd/i386下为64字节,freebsd/amd64下为128字节。

proxy_cache

语法:proxy_cache zone_name;

默认值:none

使用字段:http, server, location

设置一个缓存区域的名称,一个相同的区域可以在不同的地方使用。

在0.7.48后,缓存遵循后端的"expires", "cache-control: no-cache", "cache-control: max-age=xxx"头部字段,0.7.66版本以后,"cache-control:"private"和"no-store"头同样被遵循。nginx在缓存过程中不会处理"vary"头,为了确保一些私有数据不被所有的用户看到,后端必须设置 "no-cache"或者"max-age=0"头,或者proxy_cache_key包含用户指定的数据如$cookie_xxx,使用cookie的值作为proxy_cache_key的一部分可以防止缓存私有数据,所以可以在不同的location中分别指定proxy_cache_key的值以便分开私有数据和公有数据。

缓存指令依赖代理缓冲区(buffers),如果proxy_buffers设置为off,缓存不会生效。

proxy_cache_valid

语法:proxy_cache_valid reply_code [reply_code …] time;

默认值:none

使用字段:http, server, location

为不同的应答设置不同的缓存时间,例如:

proxy_cache_valid 200 302 10m;proxy_cache_valid 404   1m;

为应答代码为200和302的设置缓存时间为10分钟,404代码缓存1分钟。

如果只定义时间:

proxy_cache_valid 5m;

那么只对代码为200, 301和302的应答进行缓存。

同样可以使用any参数任何应答。

proxy_cache_valid 200 302 10m;proxy_cache_valid 301 1h;proxy_cache_valid any 1m;

2.定义一个简单nginx缓存服务器

[root@nginx ~]# vim /etc/nginx/nginx.confproxy_cache_path /data/nginx/cache/webserver levels=1:2 keys_zone=webserver:20m max_size=1g;  server {    listen    80;    server_name localhost;    #charset koi8-r;    #access_log logs/host.access.log main;    location / {        proxy_pass   http://webservers;        proxy_set_header x-real-ip $remote_addr;        proxy_cache webserver;        proxy_cache_valid 200 10m;    }}

3.新建缓存目录

[root@nginx ~]# mkdir -pv /data/nginx/cache/webserver

4.重新加载一下配置文件

[root@nginx webserver]# service nginx reloadnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful重新载入 nginx:                      [确定]

5.下面我们来测试一下(谷歌浏览器)

注,大家用谷歌浏览器测试的时候,可以按f12调用开发工具,选择network选项,我们可以看到,response headers,在这里我们可以看到,我们请求的是否是缓存,但现在还看不到,下面我们来配置一下,再来测试。

6. 缓存变量说明

$server_addr

服务器地址,在完成一次系统调用后可以确定这个值,如果要绕开系统调用,则必须在listen中指定地址并且使用bind参数。

$upstream_cache_status

0.8.3版本中其值可能为:

  • miss 未命中

  • expired - expired。请求被传送到后端。

  • updating - expired。由于proxy/fastcgi_cache_use_stale正在更新,将使用旧的应答。

  • stale - expired。由于proxy/fastcgi_cache_use_stale,后端将得到过期的应答。

  • hit 命中

[root@nginx ~]# vim /etc/nginx/nginx.confproxy_cache_path /data/nginx/cache/webserver levels=1:2 keys_zone=webserver:20m max_size=1g;  server {    listen    80;    server_name localhost;    #charset koi8-r;    #access_log logs/host.access.log main;    #增加两头部    add_header x-via $server_addr;    add_header x-cache $upstream_cache_status;    location / {        proxy_pass   http://webservers;        proxy_set_header x-real-ip $remote_addr;        proxy_cache webserver;        proxy_cache_valid 200 10m;    }}

7.重新加载一下配置文件

[root@nginx ~]# service nginx reloadnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful重新载入 nginx:                      [确定]

8.测试一下

注,从图中我们可以看到,我们访问的服务器是192.168.18.208,缓存命中。大家可以看到是不是很直观啊。下面我们看一下缓存目录。

9.查看一下缓存目录

[root@nginx ~]# cd /data/nginx/cache/webserver/f/63/[root@nginx 63]# ls681ad4c77694b65d61c9985553a2763f

注,缓存目录里确实有缓存文件。

关于"nginx页面缓存怎么配置"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"nginx页面缓存怎么配置"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

缓存 数据 页面 配置 参数 文件 目录 大小 不同 字段 时间 测试 代码 内存 区域 指令 服务器 知识 系统 语法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 ibm服务器 9f 我的世界服务器服主是真的快乐吗 浏览器网络安全证书免费下载 java要用哪个数据库 2018国际网络安全大赛 鹤岗进销存软件开发多少钱 武汉电商系统软件开发公司 数据库搜索单个数据文件时报错 日企软件开发部总括职能 企业网络技术开发概况 成都安卓软件开发公司有哪些 沭阳自动网络技术参考价格 全球网互联网科技有限公司 h3c服务器历史告警怎么查 泰拉瑞亚手机服务器去哪里租 万禾网络技术 面试 服务器机箱格式是什么 轻量应用服务器怎么搭建游戏 国内最大的中文文献资源数据库 山东服务器硬盘性能 高峰互联网络科技有限公司 最好用的cpu服务器 服务端数据库建立 布谷互联网科技有限公司 有关网络安全的演讲稿400字 数据库创建区域经理表 全新的数据库云 上海精密点胶软件开发 高中生学习网络安全的重要性 微信服务器是什么数据库
0