Nginx反向代理和缓存服务和手动清除缓存模块purge的配置


proxy_set_header :将客户端的信息传送给后端服务器,客户端的IP、host等信息传给后端服务器,否则后端服务器获取到的将只是反代服务器的信息
proxy_pass:指定后端服务器地址,可以为具体的域名网址,也可以为upstream指定的服务器群集名称
proxy_cache:指定需要使用的缓存池,当然在使用之前必须使用proxy_cache_path定义一个缓存池
proxy_temp_paht:不知道干什么用的,只知道配置的路径要跟proxy_cache_path在同一个分区
proxy_cache_path:设置缓存文件存放的路径,proxy_cache_path path levels=1:2 keys_zone=zone_name:500m inactive=100d max_size=100g;
proxy_cache_min_uses:
proxy_cache_valid:设置对不同返回状态码的URL设置不同的缓存时间
proxy_cache_key:设置对缓存文件保存的文件名
proxy_cache_purge:设置对某个缓存的手动清除(非nginx自带模块,需手动安装配置)




安装nginx的时候已经安装了purge模块,如果第一次编译nginx的时候没有装purge模块,则需要重新编译,(记得将conf/nginx.conf及sbin/nginx先备份下,以防万一),重新编译好后不要执行make install,以防破坏现有的工作内容!!




以下是反代+缓存的实例代码并逐行解释
http{


..........


proxy_temp_path  /www/proxy_image/proxy_temp_path;
proxy_cache_path /www/proxy_image/proxy_cache_path levels=1:2 keys_zone=image_cache:500m inactive=100d max_size=10g;


..............




server{


        listen 80;
        server_name image.test.com;    //设置客户端访问的主机头为http://image.test.com


        location /  
        {
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $remote_addr;              //设置将客户端信息传送至后端服务器
                proxy_pass http://image_r.test.com;                      //指定后端服务器为http://image_r.test.com (由于后端服务器只有一台,故未使用upstream)
        }


        location ~ /purge(/.*)              //配置purge模块用于手动清除缓存


        {
                allow 192.168.40.4;        //配置允许执行purge的IP地址,未被允许的地址执行purge则将跳转403页面,也可以设置一个IP段如192.168.1.1/24
                deny all;
                proxy_cache_purge image_cache $host$1$is_args$args;        //配置清除image_cache这个缓存池中的缓存数据,$1匹配purge后的url字段,其余部分与proxy_cache_key所设置的相一致


        }




        location ~ .*\.(gif|jpg|png|bmp|swf)$      //配置对特殊文件的处理


        {
                proxy_cache image_cache;          //配置对特殊文件使用缓存池image_cache
                proxy_cache_valid 200 304 12h;            //配置对几个特殊状态码的缓存时间,未定义的状态码全部只缓存1分钟
                proxy_cache_valid 301 302 1m;
                proxy_cache_valid any 1m;
                proxy_cache_key $host$uri$is_args$args;        //配置缓存文件保存时的文件名,这个必须要与proxy_cache_purge模块搭配
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $remote_addr;        //设置将客户端信息传送至后端服务器
                proxy_pass http://image_r.test.com;              //配置后端服务器


        }


  }


...............


}




注意点:


1、一个server段内可以有N个location。但是!每个文件访问对location的匹配是有先后顺序的!只要一旦匹配成功就马上终止对其他location的匹配。所以在对不同文件做不同的location处理的时候要搞清楚顺序。以下是各种location的匹配顺序:
(location =) > (location 完整路径 >) >(location ^~ 路径) >(location ~* 正则) >(location 路径)
在本例中,之前将purge那段location放于最后面,导致测试清除缓存的时候出现404页面,原因是访问的http://image.test.com/purge/*.*时先被 location ~ .*\.(gif|jpg|png|bmp|swf)$ 所匹配,而导致出现404页面。


你可能感兴趣的:(linux负载均衡)