Nginx配置fastcgi cache的方法介紹

來源:互聯網
上載者:User
本篇文章給大家帶來的內容是關於Nginx配置fastcgi cache的方法介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所協助。

緩衝機制

Nginx提供了基於代理(proxy)和基於fastcgi的兩種緩衝方式,兩者指令集十分相似,使用上差別不大。由於本站部落格採用Nginx+PHP-FPM架構,故而使用基於fastcgi的緩衝,即fastcgi cache。

配置

fastcgi cache的機制是將後端CGI服務返回的頁面緩衝起來,後續請求到來時直接返回頁面,省去與後端服務通訊及產生頁面的消耗。fastcgi cache與squid、varnish、CDN等原理類似,由於減少了後端請求,原則上效能會比WordPress的各種快取區外掛程式高出許多。

fastcgi cache隸屬於fastcgi模組,而fastcgi模組又歸屬於http模組,所以與緩衝相關的配置應當都出現在這兩個及下屬配置塊中(主要是http, server和location)。

根據官方文檔,部落格網站採用的緩衝配置如下:

http {  ...  fastcgi_connect_timeout 30s;  # 全域設定, fastcgi_cache_path只能出現在http配置塊中  # fastcgi_cache_path設定全域的緩衝路徑、檔案大小等,可多次出現設定不同的緩衝池  fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:10m inactive=10m max_size=500m;  fastcgi_cache_key $scheme$request_method$host$request_uri;  # 設定使用到期緩衝的情形:後端錯誤、逾時等  fastcgi_cache_use_stale error timeout invalid_header http_500 http_503;  ...  server {    ...    # 緩衝策略指示變數    set $skip_cache 0;    # 緩衝策略    if ($query_string != "") {      set $skip_cache 1;    }    if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|sitemap(_index)?.xml") {      set $skip_cache 1;    }    # 登入使用者或發表評論者    if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {      set $skip_cache 1;    }    location ~ \.php$ {      ...      # 使用的keyzone,這裡使用http中定義的WORDPRESS      fastcgi_cache WORDPRESS;      # 是否跳過緩衝      fastcgi_cache_bypass $skip_cache;      fastcgi_no_cache $skip_cache;      # 後端返回成功的情況下緩衝10分鐘      fastcgi_cache_valid 200 10m;      # 添加header欄位,指示快取命中狀態(調試使用)      add_header X-Cache $upstream_cache_status;    }  }}

上述配置做了以下工作:

  1. 設定緩衝池資訊(fastcgi_cache_path);

  2. 設定緩衝key(fastcgi_cache_key);

  3. 到期檔案處理(fastcgi_cache_use_stale)

  4. 緩衝策略(fastcgi_cache_bypass/fastcgi_no_cache)

  5. 後端請求成功時緩衝時間(fastcgi_cache_valid)

  6. 增加了調試資訊頭(add_header)

重啟Nginx,然後訪問頁面,查看頁面的header狀態和回應時間。可以看到,請求一次過後(次數可通過fastcgi_cache_min_uses設定),後續請求都從緩衝請求(X-Cache值為HIT),速度提升非常明顯。對於管理後台頁面,x-cache的值為BYPASS,正是我們需要的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.