找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 141|回复: 0

nginx反向代理缓存配置

[复制链接]

205

主题

172

回帖

6921

积分

论坛元老

积分
6921
发表于 2013-12-4 14:30:10 | 显示全部楼层 |阅读模式
这里给出示例,并详解。
  • http {
  • [...]
  • [...]

  • proxy_cache_path  /data/nginx/cache/one  levels=1:2   keys_zone=one:10m max_size=10g;
  • proxy_cache_key  "$host$request_uri";

  • server {
  •     server_name www.centos.bz centos.bz;
  •     root /home/www.centos.bz/web;
  •     index index.php index.html index.htm;
  •     location / {
  •         proxy_pass http://127.0.0.1:8080;
  •         proxy_set_header  Host "www.centos.bz";
  •         proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  •         #开启反向代理缓存,并使用zone name为one的缓存。
  •         proxy_cache one;
  •         #设置状态码为200 302过期时间为10分钟
  •         proxy_cache_valid  200 302  10m;
  •         #设置状态码404的过期时间为1分钟
  •         proxy_cache_valid  404      1m;
  •     }
  •     #清除缓存
  •     location ~ /purge(/.*) {
  •         #允许的IP
  •         allow 127.0.0.1;
  •         deny all;
  •         proxy_cache_purge one $host$1$is_args$args;
  •     }
  • }

  • }
反向代理的缓存主要涉及以下几个命令:
proxy_cache_path proxy_cache_key proxy_cache proxy_cache_valid。

proxy_cache_path
这个是设置缓存的目录,语法如下:
proxy_cache_path path [ levels = levels ] keys_zone = name : size [ inactive = time ] [ max_size = size ] [ loader_files = number ] [ loader_sleep = time ] [ loader_threshold = time ]
可放置的上下文:
http
参数解释:
[ levels = levels ]:
设置缓存目录层数,如levels=1:2,表示创建两层目录缓存,最多创建三层。第一层目录名取proxy_cache_key md5的最后一个字符,第二层目录名取倒数2-3字符,如:
proxy_cache_key md5为b7f54b2df7773722d382f4809d65029c,则:
levels=1:2为/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
levels=1:2:3为/data/nginx/cache/c/29/650/b7f54b2df7773722d382f4809d65029c

keys_zone = name : size:
定义缓存区域名称及大小,缓存名称用于proxy_cache指令设置缓存放置在哪,如proxy_cache one,则把缓存放在zone名称为one的缓存区,即proxy_cache_path指定的具体位置。

proxy_cache_key
这个指令是设置以什么参数md5得到缓存的文件名,默认为$scheme$proxy_host$request_uri,即以协议、主机名、请求uri(包含参数)作md5得出缓存的文件名。
proxy_cache_key与下面的清缓存功能(purge cache)有很大关系。
可放置在上下文,http server location

proxy_cache
反向代理缓存设置指令,语法proxy_cache zone | off,默认为off。上下文:http server location。
可以放到指定location,这样匹配此location的url才被缓存。

proxy_cache_valid
设置指定状态码的缓存时间,语法proxy_cache_valid [ code ...] time。

另外,清缓存需要安装插件ngx_cache_purge,安装方法如下:
参考:
http://wiki.nginx.org/HttpProxyModule
http://labs.frickle.com/nginx_ngx_cache_purge/

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

果子博客
扫码关注微信公众号

Archiver|手机版|小黑屋|风叶林

GMT+8, 2026-2-1 03:38 , Processed in 0.132263 second(s), 19 queries .

Powered by 风叶林

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表