Nginx vs Varnish Caching

Nginx vs Varnish Caching 比較

Written by

Varnish 是一種 HTTP 加速器程式,開發、維運或系統工程師,經常使用它來優化其 Web 伺服器的設置,以幫助您提高網站和應用的速度。

可能許多人不知道的是 Nginx 自帶了高性能的快取機制 fastcgi_cache。

之前,fastcgi_cache 的功能被認為是不完美的,由於清除快取不如 Varnish 方便,還好 EasyEngine 開發清除快取 Nginx Helper 外掛,已經解決使用 ngx_cache_purge 模組在 WordPress 後台無法清除快取的問題。

https://wordpress.org/plugins/nginx-helper/

Varnish vs Nginx

引用網路上的解釋

  • Nginx 是一個開源的 Web 服務器,也可以作為代理使用。一些大型購物網站使用它作為他們的網絡服務器,因為已知在處理並發連接方面高效且快速,此外,某些 Apache Web 服務器使用者將 Nginx 與 Apache 結合使用,將其用作反向代理。
  • Varnish 並不是一個 Web 服務器。相反的,其目的是作為前端加速器或反向代理,但是與 Nginx 最大的不同的是,它並不是一個運行整個應用程序的獨立解決方案,您仍然需要專用的 Web 服務器才能使用 Varnish,VCL 或 Varnish 配置語言是 Varnish 中使用的語言,用於指定某些請求處理規則和緩存策略。

性能

Nginx 和 Varnish 性能非常相似。這兩種服務方式都可以用作反向代理和負載均衡器,還可以做為配置緩存,並可阻擋 DDoS 攻擊。

最大的差別 Nginx 支援 SSL,Varnish 免費版不支援 SSL。直到 2016 年 9 月,Varnish 才開始支持 HTTP/2。

快取功能

當 Varnish 和 Nginx 來做緩存靜態內容時,Varnish 具有更大的靈活性,可以在複雜的系統結構使用快取,並且 Varnish 有自己清除快取的機制。另一方面 Nginx 本身並不支持這一點,只能安裝 ngx_cache_purge 模組來滿足這個需求。

從上述的比較,雖然 Varnish 更靈活,但以我們目前所使用的系統架構 Nginx + fastcgi_cache_purge 已經可以滿足 WordPress 快取的要求,系統架構上並不會複雜,並且好維護。

結語

每一個程序都有一體二面,Varnish 功能上或架構上勝過 Nginx;但就以快取機制來說,我的觀點是不要一個那麼複雜的 Web 伺服器結構系統,也意味著有更少的潛在故障和更具容易維護的解決方式,Nginx 的 fastcgi_cache_purge 仍然可以自行配置,並且可以滿足我大多數的需求及速度。

我在另一篇發表的「WordPress 配置 Nginx FastCGI 靜態頁面快取及負載測試」,關於 Nginx vs Varnish 有更清楚的說明,這也是我一直對 Varnish 沒有信仰的原因。

https://yungke.me/wordpress-configuring-nginx-fastcgi-cache/

參考文件:

Why we never use Varnish with Nginx!

https://easyengine.io/blog/why-we-never-use-varnish-with-nginx/

hosted by kinsta

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Your Mastodon Instance