Nginx实现页面缓存
页面缓存
1、缓存指令
Nginx的缓存配置比较直观简单,具体有下面几个指令需要知道:
A、proxy_cache_path
格式:proxy_cache_path path [levels=numbers] keys_zone=zone_name:zone_size[inactive=time] [max_size=size]
说明:
path -缓存文件存放的位置
levels -缓存目录结构,可以是1、2、3位数字作为目录,最多是3位数字如:1,1:2
keys_zone -指定缓存池名字及大小,每个定义缓存路径必须不同
inactive -设置每个缓存区缓存文件的有效时长,超过该时长没被访问的缓存被删除
max_size -设置不活动的缓存大小,不活动的缓存超过该大小后被删除
B、proxy_cache
格式:
proxy_cache cache_name
说明:
指定缓存区域的名字,一个相同的区域可以在不同的地方使用。
C、proxy_cache_valid
格式:
proxy_cache_valid reply_code [reply code…|any] time;
说明:
reply_code -不同的应答代码
time -为不同应答设置不同缓存时长 默认为分钟m
any - 代表任何代码
2、页面缓存设置
A、新建缓存页面
$ mkdir –pv /nginx/cache/webpages
B、配置nginx.conf
proxy_cache_path /nginx/cache/webpages levels=1:2 keys_zone=webpages:30mmax_size=2g;
server {
listen 80;
server_name localhost;
charset utf-8;
location / {
proxy_passhttp://webservers;
proxy_set_header X-Real-IP$remote_addr;
proxy_cache webpages;
proxy_cache_valid 20010m;
}
}
最后,测试下配置是否正确:
$sudo nginx –t
然后,重载下nginx服务:
$sudo nginx –s reload
C、测试结果
浏览器输入:http://127.0.0.1 然后查看缓存路径下是否生成缓存文件,以及缓存文件格式是否正确,缓存的结果:
/nginx/cache/webpages/f/63/681ad4c77694b65d61c9985553a2763f
上面的路径规则已经按照我们预期设置生成,缓存文件格式是url的hash格式,下面可以查看下这个文件是否是我们使用的页面,默认生成的缓存目录f 级别是不允许进入访问的,为了演示我已经给予其777权限了。
$cat 681ad4c77694b65d61c9985553a2763f
D、如何知道是否访问缓存?
答案很简单,我们使用谷歌浏览器浏览网页,然后打开开发者面板,查看里面的Response Headers响应头中的信息:
但从上面是看不出是否调用了缓存文件,因为需要额外配置下。首先,要了解下两个缓存变量:
$server_addr - 显示的服务器地址
$upstream_cache_status - 缓存的状态 可能的值为:MISS(未命中)、Hint(命中)、Expired(请求传递到后台)、Stale(后端得到过期的应答)、Updating(正更新,使用旧的应答)等。
那么,在这里如果缓存的状态为HINT,就说明命中了缓存,也就是调用了缓存文件。接下来,配置下nginx.conf文件,然后重新加载,刷新页面即刻,具体如下:
A、配置文件nginx.conf
proxy_cache_path /nginx/cache/webpages levels=1:2 keys_zone=webpages:30mmax_size=2g;
server {
listen 80;
server_name localhost;
charset utf-8;
#add headers
add_header X-Via$server_addr;
add_header X-Cache$upstream_cache_status;
location / {
proxy_passhttp://webservers;
proxy_set_headerX-Real-IP $remote_addr;
proxy_cache webpages;
proxy_cache_valid 20010m;
}
}
B、测试结果
如上图中的Resonpse Headers部分,已经说明缓存已经调度了。
原博文地址:http://blog.csdn.net/why_2012_gogo/article/details/50967520
为方便参考特整理到本博客.
Nginx实现页面缓存的更多相关文章
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
转载:http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...
- Nginx反向代理、负载均衡、页面缓存、URL重写及读写分离详解
大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写、读写分离及简单双机热备详解
大纲 一.前言 二.环境准备 三.安装与配置Nginx (windows下nginx安装.配置与使用) 四.Nginx之反向代理 五.Nginx之负载均衡 (负载均衡算法:nginx负载算法 up ...
- Nginx反向代理 负载均衡 页面缓存 URL重写及读写分离
大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...
- [转载]Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...
- (转)Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
原文:http://blog.51cto.com/freeloda/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Ng ...
- Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向
原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...
- 【转】nginx+memcached构建页面缓存应用
如需转载请注明出处: http://www.ttlsa.com/html/2418.html nginx的memcached_module模块可以直接从memcached服务器中读取内容后输出,后续的 ...
- Nginx设置expires设定页面缓存时间 不缓存或一直使用缓存
配置expires expires起到控制页面缓存的作用,合理的配置expires可以减少很多服务器的请求 要配置expires,可以在http段中或者server段中或者location段中加入 l ...
随机推荐
- 七:理解控件的运行机制(例:基于CompositeControl命名空间的控件)
组合控件与WebControl控件的事件和属性相差不大组合控件,顾名思义就是把一些控件组合起来形成一个控件这个控件将包含这些控件称为他的子控件 CompositeControl类实现了INameCon ...
- IE不支持 Promise 解决办法
引入 <script src = "https://cdn.polyfill.io/v2/polyfill.min.js"></script> 或 < ...
- sql cast,convert,QUOTENAME,exec 函数学习记录
语法 使用 CAST: CAST ( expression AS data_type ) 使用 CONVERT: CONVERT (data_type[(length)], expression [, ...
- Angularjs 通过asp.net web api认证登录
Angularjs 通过asp.net web api认证登录 Angularjs利用asp.net mvc提供的asp.net identity,membership实现居于数据库的用户名/密码的认 ...
- 使用centos 7安装conpot
使用CentOS的版本7.3和Conpot 0.5.1(也可能适用于其他CentOS的版本) 1.通过ssh登录系统,并需要具有足够的系统特权(e.g root) 2.系统升级 yum -y upda ...
- osgi.net框架简介
osgi.net是一个动态的模块化框架.它向用户提供了模块化与插件化.面向服务构架和模块扩展支持等功能.该平台是OSGi联盟定义的服务平台规范移植到.NET的实现. 简介 尤埃开放服务平台是一个基于. ...
- [PHP] 算法-请找出带环链表的环的入口结点的PHP实现
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null 1.找链表倒数第k个结点,输入一个链表,输出该链表中倒数第k个结点.第一个指针走(k-1)步,到达第k个节点,两个指针同时往后 ...
- mysql实践总结
首先介绍mysql的安装和基本使用.进阶操作.讲解mysql的导入导出和自动备份,然后介绍安全模式修改密码和mysql的全文本搜索功能,最后记录了个人使用mysql中遇到的问题集,闲暇时我也会多看几次 ...
- java——线程
线程与进程 1.线程:程序中单独顺序的控制流 线程本身是通过程序进行运行 线程是程序中的顺序控制流,只能使用分配给程序的资源与环境 2.进程:执行中的程序 一个进程可以包含一个或多个线程 一个进程至少 ...
- HDU5543(SummerTrainingDay03-O DP)
Pick The Sticks Time Limit: 15000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others ...