ngx_cache_purge子產品,用于清除指定URL的緩存。
下載下傳2011-05-03更新的最新版1.3
tar zxf ngx_cache_purge-1.3.tar.gz
切換到nginx目錄
cd nginx-1.0.0
./configure --user=www --group=www --add-module=../ngx_cache_purge-1.3 --prefix=/usr/local/webserver/nginx --with-http_stub_status_module
make;make install
安裝完成!
安裝完後在/usr/local/webserver/nginx下多了四個目錄,分别是fastcgi_temp,proxy_temp,scgi_temp和uwsgi_temp。
proxy_temp這個目錄用于存儲臨時檔案,需要看下是否www有權限寫入,如果不可
寫,無法在這個目錄生成檔案的話,會導緻反向代理失敗。也可以在nginx的配置裡
設定proxy_temp_path指定存儲臨時檔案的目錄。
nginx配置檔案參考:
http {
#proxy_temp_path /www/proxy_temp;
#設定Web緩存區名稱為cache_one,記憶體緩存空間大小為100MB,1天沒有被通路的内容自動清除,硬碟緩存空間大小為10GB。
proxy_cache_path /www/proxy_cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;
server {
listen 80;
server_name s.9enjoy.com;
location / {
proxy_cache cache_one;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
expires 1d;
}
location ~ /purge(/.*) {
allow all;
allow 127.0.0.1;
# deny all;
proxy_cache_purge cache_one $1$is_args$args;
}
access_log /www/logs/s.log access;
}
......
}
如果logo.gif這個檔案發生了變化,則需要重新整理緩存,通路s.9enjoy.com/purge/images/logo.gif,就會提示:Successful purge
Key : /images/logo.gif
Path: /www/proxy_cache/39aaa70038997e0e5e77beaa4392848d
如果這個檔案沒有被緩存過,則提示:404 Not Found
-------------------------------------------------------------------------------------------------------------------------
如果是已經安裝過nginx了,請一定注意,使用nginx -s reload重新開機是無效的!一定要-s stop之後再啟動,這樣才會使用新版本的nginx!
我今天就沒注意這點,在這上面化了N個小時!
/usr/local/webserver/nginx/sbin/nginx -V
nginx: nginx version: nginx/1.0.0
nginx: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-46)
nginx: configure arguments: --user=www --group=www --add-module=../ngx_cache_purge-1.3 --prefix=/usr/local/webserver/nginx --with-http_stub_status_module
一直以為是裝成功了,但反複測試均清除失敗,很郁悶!明明開啟了通路日志,日志也沒記錄任何資訊!
晚上繼續測試時,在nginx_error.log裡看到有如下的錯誤提示:
2011/05/11 21:23:40 [emerg] 20976#0: unknown directive "proxy_cache_purge" in /usr/local/webserver/nginx/conf/nginx.conf:481
才确認這個子產品跟本沒裝上,當然不能用了。後來在一個論壇看到一個人的回複說要restart,但reload是無效的。才想到前段搞nginx更新時就發現,如果不用make upgrade更新,重新編譯更新的話,必須停掉,再啟動才會使用新的版本!
<b> </b>
本文轉自crazy_charles 51CTO部落格,原文連結:http://blog.51cto.com/douya/1555472,如需轉載請自行聯系原作者