帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
服务器资讯 / 香港服务器租用 / 香港VPS租用 / 香港云服务器 / 美国服务器租用 / 台湾服务器租用 / 日本服务器租用 / 官方公告 / 帮助文档
Nginx Proxy服务器 Proxy缓存模块
发布时间:2024-02-29 20:32:43   分类:帮助文档
Nginx Proxy服务器 Proxy缓存模块

Proxy缓存
缓存类型

网页缓存 (公网)CDN
数据库缓存 memcache redis
网页缓存 nginx-proxy
客户端缓存 浏览器缓存

模块

ngx_http_proxy_module

语法

缓存开关
Syntax: proxy_cache zone | off;
Default: proxy_cache off;
Context: http, server, location
代理缓存
Syntax: proxy_cache_path path [levels=levels] keys_zone=name:size[inactive=time] [max_size=size] [manager_files=number]
Default: —
Context: http
example:proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
缓存维度
Syntax: proxy_cache_key string; 定义缓存唯一key,通过唯一key来进行hash存取,缓存文件名
Default: proxy_cache_key $scheme$proxy_host$request_uri;
Context: http, server, location
缓存过期
Syntax: proxy_cache_valid [code ...] time;
Default: —
Context: http, server, location
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;

启动缓存

1 延续代理实验
2 设置nginx-2为缓存服务器
vim /etc/nginx/conf.d/default.conf
http {
...
proxy_cache_path /app/qianfeng/cache levels=1:2 keys_zone=proxy_cache:10m max_size=10g inactive=60m use_temp_path=off;
proxy_cache_path命令中的参数及对应配置说明如下:
1.用于缓存的本地磁盘目录是/app/tianyun.me/cache
2.levels在/app/tianyun.me/cache/设置了一个两级层次结构的目录。
将大量的文件放置在单个目录中会导致文件访问缓慢,所以针对大多数部署,我们推荐使用两级目录层次结构。
如果levels参数没有配置,则NGINX会将所有的文件放到同一个目录中。
3.keys_zone设置一个共享内存区,该内存区用于存储缓存键和元数据,有些类似计时器的用途。将键的拷贝放入内存可以使NGINX在不检索磁盘的情况下快速决定一个请求是`HIT`还是`MISS`,这样大大提高了检索速度。一个1MB的内存空间可以存储大约8000个key,那么上面配置的10MB内存空间可以存储差不多80000个key。
4.max_size设置了缓存的上限(在上面的例子中是10G)。这是一个可选项;如果不指定具体值,那就是允许缓存不断增长,占用所有可用的磁盘空间。当缓存达到这个上线,处理器便调用cache manager来移除最近最少被使用的文件,这样把缓存的空间降低至这个限制之下。
5.inactive指定了项目在不被访问的情况下能够在内存中保持的时间。在上面的例子中,如果一个文件在60分钟之内没有被请求,则缓存管理将会自动将其在内存中删除,不管该文件是否过期。该参数默认值为10分钟(10m)。注意,非活动内容有别于过期内容。NGINX不会自动删除由缓存控制头部指定的过期内容(本例中Cache-Control:max-age=120)。过期内容只有在inactive指定时间内没有被访问的情况下才会被删除。如果过期内容被访问了,那么NGINX就会将其从原服务器上刷新,并更新对应的inactive计时器。
6.NGINX最初会将注定写入缓存的文件先放入一个临时存储区域, use_temp_path=off命令指示NGINX将在缓存这些文件时将它们写入同一个目录下。我们强烈建议你将参数设置为off来避免在文件系统中不必要的数据拷贝。use_temp_path在NGINX1.7版本和NGINX Plus R6中有所介绍。
...
}
location / {
...
proxy_cache proxy_cache;
Proxy_cache 使用名为 的对应缓存配置
proxy_cache_valid 200 304 12h;
proxy_cache_valid 200 206 304 301 302 12h; 对httpcode为200…的缓存12小时
proxy_cache_valid any 10m;
proxy_cache_valid 设置不同相应码的缓存时间,除了上面的,其他的的存10分钟
proxy_cache_key $host$uri$is_args$args;
proxy_cache_key $uri 定义缓存唯一key,通过唯一key来进行hash存取
add_header Nginx-Cache "$upstream_cache_status";
add_header:缓存命中情况如何在http头中体现,以及在nginx日志中查看
proxy_cache_path 缓存文件路径
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_next_upstream 出现502-504或错误,会跳过此台服务器访问下一台服务器
本实验只有一个真实服务器
(扩展)结合LB功能的设置
upstream backend {
server
backend1.example.com weight=5;
server
backend2.example.com:8080;
server unix:/tmp/backend3;

server
backup1.example.com:8080 backup;
server
backup2.example.com:8080 backup;
}
server {
location / {
proxy_pass
http://backend;
}
}
...
}
mkdir -p /app/qianfeng/cache
准备缓存文件的存放目录
systemctl restart nginx
重启服务器
3 使用PC客户机,再次访问nginx-2服务器
4 通过PC客户机浏览器开发者功能。观察是否命中缓存。
命中hit
未命中miss
提示:新创建的网页文件,初次访问均为miss。
nginx缓存工作原理
未启动缓存
启动缓存第一次查询
第一次访问,proxy_cache并没有找到对应的缓存文件(未命中缓存MISS),所以当第一次请求完成的同时,proxy_cache会保持缓存:
启动缓存第二次查询
同一个url第二次访问,当同一个文件再次到达源站,proxy_cache就会找到其对应的缓存文件(命中缓存HIT)直接返回给请求端,无需再执行php程序



香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价