nginx 1.0.0配ngx_cache_purge實(shí)現(xiàn)高效的反向代理
更新時(shí)間:2011年06月14日 22:10:04 作者:
nginx默認(rèn)安裝就會帶有反向代理的功能,但想要更好的使用,還得配備frickle.com的ngx_cache_purge模塊,用于清除指定URL的緩存。
在功能上,Nginx已經(jīng)具備Squid所擁有的Web緩存加速功能、清除指定URL緩存的功能。而在性能上,Nginx對多核CPU的利用,勝過Squid不少。另外,在反向代理、負(fù)載均衡、健康檢查、后端服務(wù)器故障轉(zhuǎn)移、Rewrite重寫、易用性上,Nginx也比Squid強(qiáng)大得多。這使得一臺Nginx可以同時(shí)作為“負(fù)載均衡服務(wù)器”與“Web緩存服務(wù)器”來使用。--by 張宴
下載2011-05-03更新的最新版1.3
wget http://labs.frickle.com/files/ngx_cache_purge-1.3.tar.gz
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下多了四個(gè)目錄,分別是fastcgi_temp,proxy_temp,scgi_temp和uwsgi_temp。
proxy_temp這個(gè)目錄用于存儲臨時(shí)文件,需要看下是否www有權(quán)限寫入,如果不可寫,無法在這個(gè)目錄生成文件的話,會導(dǎo)致反向代理失敗。也可以在nginx的配置里設(shè)置proxy_temp_path指定存儲臨時(shí)文件的目錄。
nginx配置文件參考:
http {
#proxy_temp_path /www/proxy_temp;
#設(shè)置Web緩存區(qū)名稱為cache_one,內(nèi)存緩存空間大小為100MB,1天沒有被訪問的內(nèi)容自動清除,硬盤緩存空間大小為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.jb51.net;
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;
proxy_pass http://www.dhdzp.com;
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;
}
......
}
這樣訪問s.jb51.net/images/logo.gif,反向代理就會去請求http://www.dhdzp.com/images/logo.gif,保存在內(nèi)存中,然后輸出。
如果logo.gif這個(gè)文件發(fā)生了變化,則需要刷新緩存,訪問s.jb51.net/purge/images/logo.gif,就會提示:Successful purge
Key : /images/logo.gif
Path: /www/proxy_cache/39aaa70038997e0e5e77beaa4392848d
如果這個(gè)文件沒有被緩存過,則提示:404 Not Found
如果是已經(jīng)安裝過nginx了,請一定注意,使用nginx -s reload重啟是無效的!一定要-s stop之后再啟動,這樣才會使用新版本的nginx!
我今天就沒注意這點(diǎn),在這上面化了N個(gè)小時(shí)!
/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
一直以為是裝成功了,但反復(fù)測試均清除失敗,很郁悶!明明開啟了訪問日志,日志也沒記錄任何信息!
晚上繼續(xù)測試時(shí),在nginx_error.log里看到有如下的錯(cuò)誤提示:
2011/05/11 21:23:40 [emerg] 20976#0: unknown directive "proxy_cache_purge" in /usr/local/webserver/nginx/conf/nginx.conf:481
才確認(rèn)這個(gè)模塊跟本沒裝上,當(dāng)然不能用了。后來在一個(gè)論壇看到一個(gè)人的回復(fù)說要restart,但reload是無效的。才想到前段搞nginx升級時(shí)就發(fā)現(xiàn),如果不用make upgrade升級,重新編譯升級的話,必須停掉,再啟動才會使用新的版本!
下載2011-05-03更新的最新版1.3
wget http://labs.frickle.com/files/ngx_cache_purge-1.3.tar.gz
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下多了四個(gè)目錄,分別是fastcgi_temp,proxy_temp,scgi_temp和uwsgi_temp。
proxy_temp這個(gè)目錄用于存儲臨時(shí)文件,需要看下是否www有權(quán)限寫入,如果不可寫,無法在這個(gè)目錄生成文件的話,會導(dǎo)致反向代理失敗。也可以在nginx的配置里設(shè)置proxy_temp_path指定存儲臨時(shí)文件的目錄。
nginx配置文件參考:
http {
#proxy_temp_path /www/proxy_temp;
#設(shè)置Web緩存區(qū)名稱為cache_one,內(nèi)存緩存空間大小為100MB,1天沒有被訪問的內(nèi)容自動清除,硬盤緩存空間大小為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.jb51.net;
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;
proxy_pass http://www.dhdzp.com;
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;
}
......
}
這樣訪問s.jb51.net/images/logo.gif,反向代理就會去請求http://www.dhdzp.com/images/logo.gif,保存在內(nèi)存中,然后輸出。
如果logo.gif這個(gè)文件發(fā)生了變化,則需要刷新緩存,訪問s.jb51.net/purge/images/logo.gif,就會提示:Successful purge
Key : /images/logo.gif
Path: /www/proxy_cache/39aaa70038997e0e5e77beaa4392848d
如果這個(gè)文件沒有被緩存過,則提示:404 Not Found
如果是已經(jīng)安裝過nginx了,請一定注意,使用nginx -s reload重啟是無效的!一定要-s stop之后再啟動,這樣才會使用新版本的nginx!
我今天就沒注意這點(diǎn),在這上面化了N個(gè)小時(shí)!
/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
一直以為是裝成功了,但反復(fù)測試均清除失敗,很郁悶!明明開啟了訪問日志,日志也沒記錄任何信息!
晚上繼續(xù)測試時(shí),在nginx_error.log里看到有如下的錯(cuò)誤提示:
2011/05/11 21:23:40 [emerg] 20976#0: unknown directive "proxy_cache_purge" in /usr/local/webserver/nginx/conf/nginx.conf:481
才確認(rèn)這個(gè)模塊跟本沒裝上,當(dāng)然不能用了。后來在一個(gè)論壇看到一個(gè)人的回復(fù)說要restart,但reload是無效的。才想到前段搞nginx升級時(shí)就發(fā)現(xiàn),如果不用make upgrade升級,重新編譯升級的話,必須停掉,再啟動才會使用新的版本!
相關(guān)文章
nginx 配置靜態(tài)緩存及靜態(tài)緩存文件沒有生成的問題及解決方案
這篇文章主要介紹了nginx 配置靜態(tài)緩存及靜態(tài)緩存文件沒有生成的問題及解決方案,本文分步驟結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
Nginx/Openresty中啟用http2支持的方法教程
Openresty/Nginx默認(rèn)是不支持http2的,需要將http2模塊編譯進(jìn)應(yīng)用中。這篇文章主要給大家介紹了關(guān)于在Nginx/Openresty中啟用http2支持的方法教程,文中介紹的非常詳細(xì),對大家具有一的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-07-07
詳解Nginx服務(wù)器中HTTP Headers相關(guān)的模塊配置使用
這篇文章主要介紹了詳解Nginx服務(wù)器中HTTP Headers相關(guān)的模塊配置使用,包括ngx_http_headers_module與它的增強(qiáng)版ngx_headers_more的配置使用講解,需要的朋友可以參考下2016-01-01
Nginx與Tomcat實(shí)現(xiàn)動靜態(tài)分離和負(fù)載均衡
本篇文章主要介紹了Nginx與Tomcat實(shí)現(xiàn)動靜態(tài)分離和負(fù)載均衡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-10-10
詳解Nginx服務(wù)器的nginx-http-footer-filter模塊配置
這篇文章主要介紹了Nginx服務(wù)器的nginx-http-footer-filter模塊配置,nginx-http-footer-filter用作在請求的頁面底部插入代碼,需要的朋友可以參考下2016-01-01
詳解Nginx防盜鏈和Nginx訪問控制與Nginx解析php的配置
這篇文章主要介紹了詳解Nginx防盜鏈和Nginx訪問控制與Nginx解析php的配置的相關(guān)資料,這里提供實(shí)例幫助大家,學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下2017-08-08

