閱讀所需時間: 1 minute
過去一段時間,我已在網站速度優化上花了太多時間和精力,研究過很多方法,包括不同的WordPress plugin和CDN,以我的能力,已經到了瓶頸。然而,最近接觸到 Nginx 原來有一種動態模塊的方法,在不需要重新編譯 Nginx 的情況下增加模塊,於是便想試試增加一個ngx_pagespeed的動態模塊。
什麼是動態模塊?
Nginx的模塊可為它增加不同的功能,類似於Wordpress的plugin,而模塊又分為靜態模塊(Static Module)和動態模塊(Dynamic Module)。安裝靜態模塊需要重新編譯整個Nginx,而且一旦安裝好後就無法隨時停用該模塊,如要停用,則需要在去除該模塊的情況下再重新編譯一次Nginx,可見靜態模塊不夠靈活。針對這個問題,Nginx自1.9.11版本後新增了動態模塊功能,只要在現有的nginx.conf裏的開頭加一句「load_module path」即可。
如何安裝ngx_pagespeed動態模塊
步驟一:下載ngx_pagespeed模塊
https://github.com/apache/incubator-pagespeed-ngx
步驟二:使Nginx Pagespeed支援ARM64
https://gitlab.com/gusco/ngx_pagespeed_arm
步驟三:下載Nginx源碼
步驟四:編譯 ngx_pagespeed 動態模塊
如果 ./configure 的內容錯誤,把「load_module」加入nginx.conf後,會導致「not binary compatible」錯誤出現。網上現有的教學,大多都沒有把 ./configure 應該加的內容說清楚,導致很多人都出現這個問題。
make 完後,在Nginx源碼裏的objs文檔夾裏,就能找到相應動態模塊的 .so 檔案,將其複製到現有 Nginx 文檔夾下,這個文檔的所在位置即爲「load_module path」的path。
以我安裝 ngx_pagespeed 為例,我在 Nginx 下創建裏一個「modules」文檔夾,將編譯好的 ngx_pagespeed.so 複製到此處,最後在 Nginx.conf 加上這一句:
load_module modules/ngx_pagespeed.so;
如果已使用其他的網站優化手法,比如Wordpress安裝了W3 Total Cache之類的plugin,或使用了Cloudflare之類的CDN,ngx_pagespeed模塊帶來的效果其實並不大,甚至可以說沒有任何變化。Nginx的動態模塊雖然比靜態模塊方便了很多,但因為網上教學大多都沒有說清楚,讓我這個門外漢不斷碰壁,弄了那麼久才弄好,最後一測試pagespeed,覺得其實白搞了,只是這個過程中也算學到了點東西。以後若真有需要安裝個動態模塊,這個過程就清楚很多了。