Nginx缓存
一、基于proxy_cache的缓存
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$upstream_cache_status"';
proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=cache_zone:50m inactive=1d max_size=1g;
#指定缓存文件路径选项只允许放在http标签下
#缓存文件名命名规则/usr/local/nginx/cache/c//b7f54b2df7773722d382f4809d650c
server {
listen 80;
server_name localhost;
access_log logs/access.log main;
location / {
proxy_cache cache_zone;
proxy_cache_valid 5m; #缓存HTTP状态代码为200,301和302的数据,5分钟后不再找缓存里的数据
proxy_cache_valid 200 304 302 24h;
proxy_pass http://192.168.0.37/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header Nginx-Cache "$upstream_cache_status"; #在http header上增加缓存命中显示
expires 30m; #设置浏览器缓存过期时间为30分钟
}
}
}
proxy_temp_path /usr/local/nginx/cache_temp;
#指定临时文件目录
proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=cache_zone:50m inactive=1d max_size=1g;
#设置Web缓存区名称为cache_zone,内存缓存为50MB,自动清除1天内没有被访问的文件,硬盘缓存为1GB。
#proxy_cache_path:表示缓存文件存放的路径,该路径是预先就要创建好的
#levels=1:2:设置在相对于path指定目录的第几级hash目录中缓存数据
#levels=1,表示一级hash目录,levels=1:2,表示两级hash目录,目录的名称是基于请求URL通过哈希#算法得到的
#keys_zone=cache_zone:50m:设置缓存区名称为cache_one,内存缓存为50MB
#inactive=1d:自动清除1天内没有被访问的文件
#max_size=1g:设置硬盘中缓存数据的最大缓存空间为1G
代理缓存参数
proxy_cache cache_zone;
#增加使用web缓存区cache_zone
client_body_buffer_size 512k;
#增加缓冲区代理缓冲客户端请求的最大字节数
proxy_connect_timeout 60;
#增加连接后端服务器超时时间
proxy_read_timeout 60;
#增加后端服务器响应请求超时时间
proxy_send_timeout 60;
#增加后端服务器发送数据超时时间
proxy_buffer_size 32k;
#设置代理服务器保存用户头信息的缓冲区大小
proxy_buffers 4 64k;
#proxy_buffers缓冲区,网页平均在64k以下的设置
proxy_busy_buffers_size 128k;
#增加系统繁忙时可申请的proxy_buffers大小(proxy_buffers*2)
proxy_temp_file_write_size 128k;
#增加proxy缓存临时文件的大小
proxy_cache_valid 200 301 302 24h; #等于proxy_cache_valid 24h;(超过24h不再使用缓存中的数据)
proxy_cache_valid any 1m;
#proxy_cache_valid中使用any表示缓存所有其它proxy_cache_valid中未指定HTTP状态码的数据,时间为1分钟
#proxy_cache_valid 200 302 10m;
#proxy_cache_valid 301 1h;
#表示对返回状态码为200,302的响应数据缓存10分钟,对返回状态码为301的响应数据缓存1小时
$upstream_cache_status包含以下几种状态:
MISS:未命中,请求被传送到后端
HIT:缓存命中
EXPIRED:缓存已经过期请求被传送到后端
UPDATING:正在更新缓存,将使用旧的应答
STALE:后端将得到过期的应答
添加到http头中后通过curl或浏览器查看http header如下:
HTTP/1.1 200 OK
Date: Mon, 22 Apr 2013 02:10:02 GMT
Server: nginx
Content-Type: image/jpeg
Content-Length: 23560
Last-Modified: Thu, 18 Apr 2013 11:05:43 GMT
Nginx-Cache: HIT
Accept-Ranges: bytes
Vary: User-Agent
添加到nginx日志中
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$upstream_cache_status"';
二、基于proxy_store的缓存
worker_processes ;
events {
worker_connections ;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout ;
server {
listen ;
server_name localhost;
}
location / {
root "/web1";
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path "/web1";
if ( !-f $request_filename )
{
proxy_pass http://192.168.0.37;
}
}
}
通过location的 if 条件判断驱动nginx代理服务器与后端服务器通信和web缓存;判断请求的资源在nginx代理服务器上是否存在,如果不存在就通过后端服务器获取数据,然后回传给客户端,同时使用proxy store进行缓存。
用户一访问的时候,主目录为/web1,如果里面没有用户需要的数据,就去代理取,然后缓存到自己的主目录,下次再访问同样的资源的时候,就能在缓存这里得到数据
创建文件夹:mkdir /web1
proxy store 与proxy cache的区别:proxy store不提供缓存过期更新,内存索引建立等功能,缓存文件一直会保存在本地磁盘中
参考链接:
https://www.cnblogs.com/lemon-le/p/7804347.html
Nginx缓存的更多相关文章
- ASP.NET Core 缓存技术 及 Nginx 缓存配置
前言 在Asp.Net Core Nginx部署一文中,主要是讲述的如何利用Nginx来实现应用程序的部署,使用Nginx来部署主要有两大好处,第一是利用Nginx的负载均衡功能,第二是使用Nginx ...
- nginx缓存设置proxy_cache
http://www.cnblogs.com/dudu/p/4597351.html http块: proxy_cache_path /tmp/cache levels=1:2 keys_zone=n ...
- nginx缓存配置的操作记录梳理
web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器直接输 ...
- nginx 缓存机制
nginx 缓存机制 Nginx缓存的基本思路 利用请求的局部性原理,将请求过的内容在本地建立一个副本,下次访问时不再连接到后端服务器,直接响应本地内容 Nginx服务器启动后,会对本地磁盘上的缓 ...
- Nginx 缓存参数
看看这下面两个指令参数: ----------------------------------------------------------------- proxy_cache_path /ho ...
- 分布式Nginx缓存清理(PHP的socket编程)
最近,公司要使用康乐的几台自建CDN换成Nginx,在缓存配置上不会有很多的问题,纠结的问题是:Nginx的如何批量进行缓存清理 我们都知道Nginx提供了一个第三方的模块"nginx ng ...
- nginx缓存优先级(缓存问题者必看)
接触nginx的兄弟或多或少都有遇到缓存问题,要么是nginx为什么不缓存,要么就是nginx缓存很快就失效等等问题,在网上找了一遍nginx缓存优先级的文章,大家可以参考下. 架构图client端 ...
- Nginx实现负载均衡&Nginx缓存功能
一.Nginx是什么 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambl ...
- 使用nginx缓存服务器上的静态文件
一.nginx缓存的优点 如图所示,nginx缓存,可以在一定程度上,减少源服务器的处理请求压力. 因为静态文件(比如css,js, 图片)中,很多都是不经常更新的.nginx使用proxy_cach ...
- nginx缓存设置(expires)
一.expires功能说明 nginx缓存的设置可以提高网站性能,对于网站的图片,尤其是新闻网站,图片一旦发布,改动的可能是非常小的,为了减小对服务器请求的压力,提高用户浏览速度,我们可以通过设置ng ...
随机推荐
- python查询数据库返回数据
python查询数据库返回数据主要运用到flask框架,pymysql 和 json‘插件’ #!/usr/bin/python # -*- coding: UTF-8 -*- import pymy ...
- Linux设置定时任务
什么是crond? crond是Linux系统用来定期执行命令或指定程序的服务的一种服务或软件.一般情况下当我们安装完成Linux操作系统之后,默认便会启动Crond任务调用服务.Crond服务会定 ...
- 【错误总结1:unity StartCoroutine 报 NullReferenceException 错误】
今天在一个项目中,写了一个单例的全局类,该类的作用是使用协程加载场景.但在StartCoroutine 这一步报了NullReferenceException 的错.仔细分析和搜索之后,得到错误原因. ...
- STM32F103引脚功能定义
- java爬取免费HTTP代理 code-for-fun
偶然看到一个提供免费HTTP 代理IP的网站,该网站一两个小时就会更新一次,很有用.之后自己就用Java写了一个爬虫,爬取网站上的代理IP,以备后用. 网站源码: <!DOCTYPE html& ...
- restful 跨域
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能. 就浏览器而言的, http://127.0.0.1:8000 协议 域名 端口 跨域 问题// 简单 ...
- Gitlab定义安全变量遇到无法转义的字符——感叹号
我在安全变量(Secret variables)中定义了一个变量,变量值中含有特殊字符感叹号 ! . 然后我在批处理中,引用了该变量,惊奇地发现,变量值中的 ! 丢失了. 我以为是Windows CM ...
- 第十二节 JS事件高级应用
事件绑定: IE方式:(仅适用于IE9及以下,其他的比如FF.Chrome.IE11都不适用) attachEvent(事件名称, 函数):绑定事件处理函数 detachEvent(事件名称, 函数) ...
- mysql时间相加函数DATE_ADD()
mysql中的DATE_ADD()函数 1.定义:函数向日期添加指定的时间间隔. 2.语法:DATE_ADD(date,INTERVAL expr type) date 参数是合法的日期表达式.exp ...
- Unity用Excel.dll简单读取Excel内容
Unity用Excel.dll简单读取Excel内容 需要Excel.dll 需要如下三个命名空间 using System.IO; using Excel; using System.Data; 1 ...