上海网站建设推广,江北网站建设的技术,河南省住房城乡建设厅,网站做好后交接文章目录 前言1. web缓存服务1.1 原理1.2 指令1.2.1 proxy_cache_path1.2.2 proxy_cache1.2.3 proxy_cache_key1.2.4 proxy_cache_valid1.2.5 proxy_cache_min_uses1.2.6 proxy_cache_methods 2. 缓存案例3. 缓存的清除3.1 删除对应的缓存目录3.2 使用第三方扩展模块ngx_cache_… 文章目录 前言1. web缓存服务1.1 原理1.2 指令1.2.1 proxy_cache_path1.2.2 proxy_cache1.2.3 proxy_cache_key1.2.4 proxy_cache_valid1.2.5 proxy_cache_min_uses1.2.6 proxy_cache_methods 2. 缓存案例3. 缓存的清除3.1 删除对应的缓存目录3.2 使用第三方扩展模块ngx_cache_purge并使用proxy_cache_purge指令 4. 设置资源不缓存4.1 proxy_no_cache4.2 proxy_cache_bypass4.3 设置不缓存资源的配置方案 前言 使用缓存的优点在于减少数据传输节省网络流量加快响应速度减轻服务器压力提供服务端的高可用性缺点在于数据的不一致问题增加成本 Nginx作为Web缓存服务器介于客户端和应用服务器之间当用户通过浏览器访问一 个URL时web缓存服务器会去应用服务器获取要展示给用户的内容将内容缓存到自己的服务器上当下一次请求到来时如果访问的是同一个URLweb缓存服务器就会直接将之前缓存的内容返回给客户端 1. web缓存服务
1.1 原理 Nginx的web缓存服务主要是使用ngx_http_proxy_module模块其基于Proxy Store来实现其原理是把URL及相关组合当做Key,在使用MD5算法对Key进行哈希得到硬盘上对应的哈希目录路径从而将缓存内容保存在该目录中。它可以支持任意URL连接同时也支持404/301/302这样的非200状态码。Nginx即可以支持对指定URL或者状态码设置过期时间也可以使用purge命令来手动清除指定URL的缓存
1.2 指令
1.2.1 proxy_cache_path 语法
proxy_cache_path path [levelsnumber] keys_zonezone_name:zone_size [inactivetime][max_sizesize];path:缓存路径地址 levels: 指定该缓存空间对应的目录最多可以设置3层每层取值为1|2MD5加密后的密文从后往前取值1到2个字符 keys_zone:用来为这个缓存区设置名称和指定大小 inactive:指定缓存的数据多次时间未被访问就将被删除 max_size:设置最大缓存空间如果缓存空间存满默认会覆盖缓存时间最长的资源 实例
http {
proxy_cache_path /usr/local/proxy_cache keys_zonecz:200m levels1:2:1 inactive1d max_size20g;
}1.2.2 proxy_cache
开启或关闭代理缓存如果是开启则自定使用哪个缓存区来进行缓存
1.2.3 proxy_cache_key
设置web缓存的key值Nginx会根据key值MD5哈希存缓存
1.2.4 proxy_cache_valid
对不同返回状态码的URL设置不同的缓存时间
1.2.5 proxy_cache_min_uses
设置资源被访问多少次后被缓存
1.2.6 proxy_cache_methods
设置缓存哪些HTTP方法 2. 缓存案例
在http块中设置
proxy_cache_path /usr/local/proxy_cache keys_zonecz:200m levels1:2:1 inactive1d max_size20g;server {listen 12305;location ~* .\.(png|jpg|css|html|js)$ {proxy_cache cz;proxy_cache_key $scheme$proxy_host$request_uri;proxy_cache_min_uses 1;proxy_cache_valid 200 1d;proxy_cache_valid any 1m;add_header nginx-cache $upstream_cache_status;proxy_pass http://172.18.25.50:12306;}}server {listen 12306;location ^~ /bdosp {alias /mnt/disk1/home/ZLQ_YL/myUI/bdops_ui/bdopsDist/bdosp;index index.html index.htm;}} 3. 缓存的清除
3.1 删除对应的缓存目录
rm -rf /usr/local/proxy_cache3.2 使用第三方扩展模块ngx_cache_purge并使用proxy_cache_purge指令 4. 设置资源不缓存
4.1 proxy_no_cache 定义不将数据进行缓存的条件 示例
proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;4.2 proxy_cache_bypass 设置不从缓存中获取数据的条件 示例
proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;$cookie_nocache指当前请求的cookie中键的名称为nocache对应的值 $arg_nocache和$arg_comment指的是当前请求的参数中属性名为nocache和comment对应的属性值 至少有一个不为空且不等于0,则条件满足成立
4.3 设置不缓存资源的配置方案
server{
listen 8080;
server_name localhost;
location / {if ($request_uri ~ /.*\.js$){set $nocache 1;}
proxy_no_cache $nocache $cookie_nocache $arg_nocache $arg_comment;
proxy_cache_bypass $nocache $cookie_nocache $arg_nocache $arg_comment;}}