posts - 36, comments - 30, trackbacks - 0, articles - 3

配置Nginx 缓存服务器

Posted on 2016-03-08 20:29 笑看人生 阅读(2900) 评论(1)  编辑  收藏
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

参照以下网址,在CentOS上安装Nginx
http://www.blogjava.net/jacky9881/archive/2016/02/19/429375.html

1.首先新建以下两个目录,用于存放缓存文件;
   [root@localhost nginx]# mkdir -p /data/nginx/proxy_temp_path
   [root@localhost nginx]# mkdir -p /data/nginx/proxy_cache_path

2.编辑nginx.conf文件
  在http模块增加如下内容,指定缓存文件的存放路径:
  proxy_temp_path /data/nginx/proxy_temp_path;
  proxy_cache_path /data/nginx/proxy_cache_path levels=1:2 keys_zone=cache_one:20m inactive=1d max_size=3g ;  

注:通过keys_zone来指定缓存区的名字,在接下来的location模块配置中需要用到;
      20m是指定用于缓存的内存大小(由于本人虚拟机内存原因,设置了20M,生产环境中可以设置大一些,比如1G);
      inactive=1d,代表缓存的数据如果超过一天没有被访问的话,则自动清除;
      max_size=3g是指定用于缓存的硬盘大小(由于本人虚拟机内存原因,设置了3g,生产环境中可以设置大一些,比如50G);
      levels=1:2 指定该缓存目录中有两层hash目录,第一层目录为1个字母,第二层为2个字母,其中第一层目录名为缓存数据MD5编码的倒数第一个
     字母,第二层目录名为缓存数据MD5编码的倒数2,3两个字母;

 upstream local_tomcats {
       server 192.168.8.132:8080;
       server 192.168.8.130:8080;
}

 修改location模块
  location ~ \.(jsp|do)$ {
            proxy_pass http://local_tomcats;
 }        
        
  location / {

            proxy_cache cache_one;
            #定义http返回值为200和304,缓存时间12小时,如果12小时后,没有被访问,则自动被删除;
            #200表示 服务器已成功处理了请求,304表示 自从上次请求后,请求的网页未修改过
            proxy_cache_valid 200 304 12h ;
            proxy_cache_valid 301 302 1m ;
            proxy_cache_valid any 10m ;
            proxy_cache_key $host$uri$is_args$args;

            proxy_ignore_headers X-Accel-Expires Expires  Set-Cookie Cache-Control;
            proxy_hide_header Cache-Control;
            proxy_hide_header Set-Cookie;               
            proxy_pass http://local_tomcats; #这个要设定,否则好像生成不了缓存文件

    }
#用于清除缓存
 location ~ /purge(/.*) {
            allow 127.0.0.1;
            allow 192.168.8.132;
            deny all ;
            proxy_cache_purge cache_one $host$1$is_args$args ;
   }  

在浏览器地址栏输入:http://www.hw.com/tomcat.png
查看缓存目录
[root@localhost nginx]# ls /data/nginx/proxy_cache_path/7/8a
b12ee1366ed4307aa6408a16286658a7

可以看到,缓存文件已经生成,注意缓存文件名最后三位和缓存文件夹的关系。

在浏览器地址栏输入:http://www.hw.com/purge/tomcat.png
页面显示如下信息,提示缓存文件已经被清除。

Successful purge

Key : www.hw.com/tomcat.png
Path: /data/nginx/proxy_cache_path/7/8a/b12ee1366ed4307aa6408a16286658a7 

注意这里的Key,就是配置文件中定义 proxy_cache_key 

查看缓存命中率
location / 模块,增加如下代码
add_header  Nginx-Cache "$upstream_cache_status"

同时在http模块打开ngnix的日志功能,默认是关闭状态。

    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"';
    access_log  logs/access.log  main;
 

[root@localhost nginx]# ./sbin/nginx -s reload

在浏览器地址栏输入:http://www.hw.com/tomcat.png
重复刷新几次,打开日志文件 logs/access.log,可以看到HIT的字样,意味着缓存命中。

192.168.8.132 - - [08/Mar/2016:20:48:38 +0800] "GET /tomcat.png HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0" "-""HIT"
192.168.8.132 - - [08/Mar/2016:20:48:40 +0800] "GET /tomcat.png HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0" "-""HIT"
192.168.8.132 - - [08/Mar/2016:20:48:42 +0800] "GET /tomcat.png HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0" "-""HIT"


Feedback

# re: 配置Nginx 缓存服务器  回复  更多评论   

2016-03-13 20:46 by 淘宝刷流量软件
谢谢分享!!

只有注册用户登录后才能发表评论。


网站导航: