首頁  >  文章  >  後端開發  >  Nginx配置fastcgi cache的方法介紹

Nginx配置fastcgi cache的方法介紹

不言
不言原創
2018-08-07 13:58:402556瀏覽

這篇文章帶給大家的內容是關於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,正是我們所需要的。

相關文章推薦:

Nginx設定檔nginx.conf的操作步驟

Nginx中的Rewrite偽靜態法則的解說(詳細)

以上是Nginx配置fastcgi cache的方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn