<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        nginx的proxy_cache和cache_purge模塊試用記錄

        來源:懂視網 責編:小采 時間:2020-11-09 13:33:17
        文檔

        nginx的proxy_cache和cache_purge模塊試用記錄

        nginx的proxy_cache和cache_purge模塊試用記錄:nginx的類squid哈希式cache功能,據張宴說是基本穩定可用了,昨天找個機會和時間,試著測用了一把,把要點記錄一下: 首先是編譯nginx,方便起見,把一些心儀的模塊統統加上了,version如下: built by gcc 4.1.2 20080704 (Red Hat 4
        推薦度:
        導讀nginx的proxy_cache和cache_purge模塊試用記錄:nginx的類squid哈希式cache功能,據張宴說是基本穩定可用了,昨天找個機會和時間,試著測用了一把,把要點記錄一下: 首先是編譯nginx,方便起見,把一些心儀的模塊統統加上了,version如下: built by gcc 4.1.2 20080704 (Red Hat 4

        nginx的類squid哈希式cache功能,據張宴說是基本穩定可用了,昨天找個機會和時間,試著測用了一把,把要點記錄一下: 首先是編譯nginx,方便起見,把一些心儀的模塊統統加上了,version如下: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-44)TLS SNI suppor

        nginx的類squid哈希式cache功能,據張宴說是基本穩定可用了,昨天找個機會和時間,試著測用了一把,把要點記錄一下:

        首先是編譯nginx,方便起見,把一些心儀的模塊統統加上了,version如下:

        built by gcc 4.1.2 20080704 (Red Hat 4.1.2-44)
        TLS SNI support disabled
        configure arguments: --prefix=/home/nginx --with-pcre --add-module=../ngx_http_consistent_hash --add-module=../ngx_max_connections --add-module=../ngx_cache_purge --add-module=../ngx_mp4_streaming_public --with-cc-opt=-O3 --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --without-http_memcached_module --without-http_fastcgi_module --with-google_perftools_module
        

        編譯過程中幾個注意事項:

        1. 必須采用–with-pcre,而不要偷懶采用–without-http_rewrite_module,否則配置文件里將不支持if判斷;
        2. 加載mp4_streaming,必須采用–with-cc-opt=-O3方式進行編譯。
        3. max_connections模塊默認支持nginx最新版本是0.8.32,需要vi修改其DIR,然后path -p0,但千萬不要看見有個Makefile就執行make && make install了,因為它會毫無道理的把整個nginx安裝到當前目錄的.nginx下隱藏起來……

        話說我add這個max_connections模塊能怎么用自己也沒想好,反正官方有limit_zone和limit_req限制client,再add個限制nginx2oringin的也不在乎吧……汗~~

        比較囧的一點是,經過我折騰的nginx,雖然去除了debug -g模式編譯,還是有4M多大……

        sina的ncache模塊,在我下載的最新的nginx0.8.34src上無法使用,而且ncache作者介紹說ncache的緩存不用內存,且其purge方式為標記為過期但并不更改文件內容直到下次訪問請求以節省磁盤IO的負擔;但根據我的試驗,nginx的cache_purge模塊則是采用了刪除過期文件的方式進行(當然,proxy_cache的過期還是標記而不刪除的,不然太耗IO了……)。

        然后貼一下,實驗完成后的配置文件:

        user nobody nobody;
        worker_processes 1;
        google_perftools_profiles /tmp/tcmalloc;
        worker_rlimit_nofile 65535;
        events
        {
         use epoll;
         worker_connections 65535;
        }
        http
        {
         include?????? mime.types;
         default_type? application/octet-stream;
         log_format? main? '$remote_addr - $remote_user [$time_local] "$request" '
         '$status $body_bytes_sent "$http_referer" '
         '"$http_user_agent" "$http_x_forwarded_for"';
         access_log? logs/access.log? main ;
         #? charset? utf-8;
         server_names_hash_bucket_size 128;
         client_header_buffer_size 32k;
         large_client_header_buffers 4 32k;
         client_max_body_size 300m;
         sendfile on;
         tcp_nopush???? on;
         keepalive_timeout 60;
         tcp_nodelay on;
         client_body_buffer_size? 512k;
         proxy_connect_timeout??? 5;
         proxy_read_timeout?????? 60;
         proxy_send_timeout?????? 5;
         proxy_buffer_size??????? 16k;
         proxy_buffers??????????? 4 64k;
         proxy_busy_buffers_size 128k;
         proxy_temp_file_write_size 128k;
         gzip on;
         gzip_min_length? 1k;
         gzip_buffers???? 4 16k;
         gzip_http_version 1.1;
         gzip_comp_level 2;
         gzip_types?????? text/plain application/x-javascript text/css application/xml;
         gzip_vary on;
         #定義cache臨時緩存路徑,必須和哈希緩存路徑在同一個磁盤上
         proxy_temp_path?? /cache/proxy_temp_dir;
         #定義cache哈希緩存路徑,目錄層次,緩存名稱及所允許緩存的最大文件大小,未被訪問文件多久自動清除,緩存最多使用多大磁盤
         proxy_cache_path? /cache/proxy_cache_dir? levels=1:2?? keys_zone=cache_one:200m inactive=1d max_size=30g;
         #后端源站地址
         upstream backend{
         server 10.10.10.13:80;
         }
         server
         {
         listen?????? 80;
         server_name? www.test.com;
         #這里就是關鍵部分了,定義哈希緩存及緩存過期;
         #因為nginx提供的過期控制是針對http_status_code的,我本想通過location中限定類型的方法完成曲線救國,結果發現:一旦location中限定了文件類型,緩存過期的定義就失效!!
         #也就是說,限定文件類型后的哈希緩存,是絕絕對對的強制永久緩存——不單過期失效,下面的purge也失效——或許換一個場景,這個剛好有用。
         #?? location ~* .*.(css|gif|jpg|png|html|swf|flv)
         location / {
         #啟用flv拖動功能;
         flv;
         #這里定義是如果碰上502、504、timeout和invalid_header等情況,自動調向下一個oringin繼續請求,這個有時候有用,有時候可能被攻擊的會很慘……
         proxy_next_upstream http_502 http_504 error timeout invalid_header;
         #使用上面定義的具體某個緩存;
         proxy_cache cache_one;
         #200和304的狀態碼訪問都緩存1天;
         proxy_cache_valid? 200 304 1d;
         #由主機名、唯一資源定位符、參數判斷符和請求參數共同生成哈希緩存的key
         proxy_cache_key $host$uri$is_args$args;
         #下面幾個是常見的nginx透明代理header
         proxy_pass_header User-Agent;
         proxy_set_header Host? $host;
         proxy_set_header X-Forwarded-For? $remote_addr;
         #下面是為了證明給大家看他確實能緩存,增加的兩句話;如果真想要看到HIT和MISS的話,可以addnginx的另一個模塊slowfs_cache,配置上和官方的proxy_cache極其相似,不過自帶有變量$slowfs_cache_status,可以顯示HIT/MISS/EXPIRED。
         add_header X-Cache "HIT from cache_test";
         add_header Age "1";
         proxy_pass http://backend;
         }
         #下面這段就是add的purge_mod,只要在url的^/前再加上/purge,就會自動被理解成PURGE請求,刷新成功返回200的特定頁面,失敗返回404的普通錯誤頁面。
         #這個proxy_cache_purge格式沒法改變,我本想改成if ($request_method = PUREG){…}試試,結果發現它不認……
         location ~ /purge(/.*){
         allow??????????? 127.0.0.1;
         allow??????????? 211.151.67.0/24;
         deny??????????? all;
         proxy_cache_purge??? cache_one?? $host$1$is_args$args;
         }
         #不區分大小寫匹配~*,網上流傳很廣的寫法*~*是錯滴;而且能匹配不代表保存同一份緩存;
         #這部分定義不緩存而是透傳的請求類型。介于無法通過類型來控制緩存,那么這里不緩存的控制就必須確保嚴格正確了……
         #可是bug來了,當我寫成swf?$的時候,swf/swf?/swf?*都不緩存;寫成swf?的時候,又變成都緩存——nginx壓根就分不清!
         location ~* .*.(swf|asp)?{
         proxy_pass_header User-Agent;
         proxy_set_header Host $host;
         proxy_set_header X-Forwarder-For $remote_addr;
         add_header X-Cache "MISS from cache_test";
         proxy_pass http://backend;
         }
         }
        }
        

        配置完成。測試如下: wget http://www.test.com/List/j.Html -S -O /dev/null -e http_proxy=127.0.0.1 –13:17:48–? http://www.test.com/List/j.Html Connecting to 127.0.0.1:80… connected. Proxy request sent, awaiting response… HTTP/1.1 200 OK Server: squid/2.6.STABLE21 Date: Sun, 07 Mar 2010 05:17:48 GMT Content-Type: text/html; charset=utf-8 Connection: close Vary: Accept-Encoding Content-Length: 25126 Last-Modified: Wed, 10 Feb 2010 09:38:26 GMT ETag: “948acecb34aaca1:6647” X-Powered-By: ASP.NET X-Cache: HIT from cache_test Age: 1 Accept-Ranges: bytes Length: 25126 (25K) [text/html] Saving to: `/dev/null’

        100%[====================================================================================================================>] 25,126????? --.-K/s?? in 0s
        

        13:17:48 (521 MB/s) - `/dev/null’ saved [25126/25126]

        [root@sdl4 ~ 13:17:48]# wget -S -O /dev/null -e http_proxy=127.0.0.1 “http://www.test.com/Search.ASP?KeyWord=整形視頻” –13:17:50–? http://www.test.com/Search.ASP?KeyWord=%D5%FB%D0%CE%CA%D3%C6%B5 Connecting to 127.0.0.1:80… connected. Proxy request sent, awaiting response… HTTP/1.1 200 OK Server: squid/2.6.STABLE21 Date: Sun, 07 Mar 2010 05:17:51 GMT Content-Type: text/html; charset=utf-8 Connection: close Vary: Accept-Encoding X-Powered-By: ASP.NET Content-Length: 24987 Set-Cookie: ASPSESSIONIDSSQQSBST=KDPDLODBNLGONONBNHCJCEGP; path=/ Cache-control: private X-Cache: MISS from cache_test Length: 24987 (24K) [text/html] Saving to: `/dev/null’

        100%[====================================================================================================================>] 24,987????? 25.6K/s?? in 1.0s
        13:17:52 (25.6 KB/s) - `/dev/null' saved [24987/24987] 完成。 至于?的問題,目前針對需要,倒有另一個辦法: 在location / {}中,根據請求參數判斷進行傳遞。即寫成如下:
        

        location / {
         ……
         if ($is_args){
         add_header X-Cache "MISS from cache_test";
         proxy_pass http://backend;
         }
        }
        location ~* .*\.asp{
         proxy_pass_header User-Agent;
         proxy_set_header Host $host;
         proxy_set_header X-Forwarder-For $remote_addr;
         add_header X-Cache "MISS from cache_test";
         proxy_pass http://backend;
        }
        

        不過依然有問題:

        1. nginx的if不支持&&或者||,萬一有些類型(比如htm和jpg)又要求帶?的也緩存,顯然又和這個$is_args沖突; 或許采用下面的辦法能繼續區分?(未試驗)

        set $yn $is_args;
        if ($uri ~* .(htm|jpg)){
         set $yn "";
        }
        if ($yn){
         proxy_pass http://backend;
        }
        

        ; 2. nginx的if中不單不支持proxy_cache,居然也不支持proxy_set_header等定義,只能單純的proxy_pass。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        nginx的proxy_cache和cache_purge模塊試用記錄

        nginx的proxy_cache和cache_purge模塊試用記錄:nginx的類squid哈希式cache功能,據張宴說是基本穩定可用了,昨天找個機會和時間,試著測用了一把,把要點記錄一下: 首先是編譯nginx,方便起見,把一些心儀的模塊統統加上了,version如下: built by gcc 4.1.2 20080704 (Red Hat 4
        推薦度:
        標簽: 記錄 試用 模塊
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 免费在线观看你懂的| 巨胸喷奶水视频www网免费| 亚洲香蕉成人AV网站在线观看| 无码日韩精品一区二区免费| 国产亚洲日韩一区二区三区| 国产激情久久久久影院老熟女免费| 两个人看的www免费高清| 中文字幕日韩亚洲| 日本免费污片中国特一级| 亚洲av成人无码久久精品| 少妇太爽了在线观看免费视频 | 成在人线av无码免费高潮水| 无码国产亚洲日韩国精品视频一区二区三区| 亚洲精品夜夜夜妓女网| 久久不见久久见免费影院www日本| 永久免费AV无码国产网站| 亚洲国产成人精品无码一区二区| 一区二区三区视频免费观看| 狠狠综合久久综合88亚洲| 免费福利电影在线观看| 亚洲综合视频在线观看| 人妻视频一区二区三区免费| 免费国产草莓视频在线观看黄| 成年女人免费视频播放77777| 亚洲人成影院在线无码按摩店| 亚洲性色AV日韩在线观看| 四虎影视精品永久免费| 91福利免费网站在线观看| 亚洲AV日韩AV天堂久久| 欧美最猛性xxxxx免费| 三年片在线观看免费观看大全中国| 在线a级毛片免费视频| 一级毛片免费在线播放| 亚洲AV人人澡人人爽人人夜夜| www.av在线免费观看| 久久久久亚洲AV无码网站| 黄a大片av永久免费| 光棍天堂免费手机观看在线观看| 亚洲高清无码专区视频| 水蜜桃视频在线观看免费播放高清 | 岛国av无码免费无禁网站|