502 Bad Gateway Error with nginx

源頭

在攥寫「七天學會設計模式 – Singleton」時,發生了點小狀況。

我點擊 WordPress 的「全部文章」時,顯示 502 Bad Gateway 的錯誤訊息;

由於點下去後不久(一、兩秒內)就跳轉出錯誤,故猜測不是 timeout 的關係,

便開始了一段 debug 的故事⋯⋯

環境

我是使用 WordPress(不是重點)的框架,並架設在 Vultr 的主機上;

主機的主要規格為 CPU 1 vCore、RAM 1024 MB、25 GB SSD。

 

原因

透過 nginx 的 error log(cat /var/log/nginx/wordpress_https_error.log)

發現關鍵字:

upstream sent too big header while reading response header from upstream

拿去餵狗的結果是,需要調整 nginx.conf(vim /etc/nginx/nginx.conf),

加上

來調整 buffer size,來避免資源不足直接捨棄的情況(502)。

由於 5 塊美金的方案,Vultr 僅提供 1024 MB 的記憶體大小,但它有 25 GB 的 SSD!

故可以透過 Swap 的方式,用硬碟換取記憶體的效能。

依序輸入完後,可以輸入「free」來看 swap 是否有使用相對應的 size 了!

便可以解決 nginx 因資源不足所產生的 502 Bad Gateway error!