热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Nginx配置反向代理时cache缓存的使用方法

nginx的反代理功能一直很强大,无奈过去没有很好的cache机制,在0.7.44版里新加入的proxycache功能后,发展至今,这个功能已经很完善和稳定,感觉有种替代传统cache如squid的趋势
nginx的反代理功能一直很强大,无奈过去没有很好的cache机制,在0.7.44版里新加入的proxy cache功能后,发展至今,这个功能已经很完善和稳定,感觉有种替代传统cache如squid的趋势啊。
配置一下,很简单,配合上nginx的规则过滤真的很强大啊,简单http部分配置如下:
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
#### proxy_cache_path 指令指定缓存的路径和一些其他参数,缓存的数据存储在文件中。缓存的文件名和key为代理URL的MD5 码。levels参数指定缓存的子目录数,所有活动的key和元数据存储在共享的内存区域中,这个区域用keys_zone参数指定,keys_zone指定缓存的名字和共享内存大小,如果在inactive参数指定的时间内缓存的数据没有被请求则被删除,默认inactive为10分钟。cache manager进程控制磁盘的缓存大小,在max_size参数中定义,超过其大小后最少使用数据将被删除。
    proxy_cache_path /www/ng_cache levels=1:2 keys_zOne=tmp_cache:1000m inactive=1d max_size=10000m;
    upstream backend {
        server 10.0.8.1:80
    }
    server {
        listen       80;
   server_name  localhost;
#### proxy_temp_path 必须和 proxy_cache_path 在同一分区
        proxy_temp_path /www/ng_tmp;
        location / {
            proxy_pass http://backend;
#### proxy_cache设置一个缓存区域的名称,一个相同的区域可以在不同的地方使用。在0.7.48后,缓存遵循后端的Cache-Control, Expires以及其他等。缓存依赖代理的缓冲区,如果proxy_buffers设置为off,将不会生效。
            proxy_cache tmp_cache;
#### proxy_cache_key 指定了包含在缓存中的缓存关键字(默认情况下服务器的主机名并没有包含到缓存关键字中)
            proxy_cache_key $host$uri$is_args$args;
#### 只对代码为200, 301和302的应答进行缓存10分钟
 proxy_cache_valid 10m;
        }
#### purge缓存的设置
        location ~ /purge(/.*) {
           allow     127.0.0.1;
           deny               all;
#### proxy_cache_purge 设置要purge的缓存名字和cache_key(需和proxy_cache_key对应,不然会purge成404,要使用purge,需在编译nginx的时候加上第三方的cache_purge模块)
   proxy_cache_purge  tmp_cache $host$1$is_args$args;
        }
    }
}
但proxy_cache好像没办法跟squid样的在多个不同分区同时设置缓存目录和文件,不过nginx可以通过nginx的做法,我是先多设置几个proxy_cache_path指定不同分区取不同名字,然后起多个server监听不同端口缓存到不同的proxy_cache_path,再通过upstream的url_hash或者其他方式反代理过去,测试还是很好使的~~

推荐阅读
author-avatar
小勺年
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有