如何有效管理與監控 Nginx 服務?
高品質的 Nginx 服務管理 需整合自動化與視覺化工具。推薦的解決方案包含:1. Nginx Proxy Manager:提供圖形化介面與 Let’s Encrypt 整合,大幅簡化反向代理設定;2. Nginx GIXY 安全檢測:自動化掃描配置缺陷,防範路徑穿越與 HTTP 分裂等資安風險;3. GoAccess 日誌分析:即時產生精美的 Nginx 監控報表,適合輕量級分析。若需更深度的運維監控,則可結合 Elastic Stack (Filebeat/Metricbeat) 實現高品質的數據監測。掌握這些工具,能讓開發者從繁瑣的設定檔中斷捨離,提升伺服器維運的穩定性與安全性。
延續之前對 Nginx 基礎設定的探討,本文將深入介紹三款強大的 Nginx 管理與監控工具:Nginx Proxy Manager、Nginx GIXY 以及 GoAccess。無論是圖形化介面管理、安全配置檢測,還是即時日誌分析,這些監控工具都能有效提升 Nginx 服務的運維效率與安全性。
Nginx Proxy Manager
Nginx Proxy Manager 提供圖形化的管理介面,並且內建支援 Let’s Encrypt 能免費支援網頁 HTTPS 服務。這是一個非常實用的 Nginx 管理工具。
透過 GUI 的管理介面可以更清楚的瀏覽 Proxy 設定,並且透過 Log 也可以看到修改紀錄,蠻適合用在測試環境給新手共同維護。
照著官網的安裝也真的很快速,官方網站:https://nginxproxymanager.com/
- 加入
docker-compose.yml
1 | version: "3" |
docker-compose up -dhttp://127.0.0.1:81預設的帳號密碼 admin@example.com/changeme
測試的話,windows 的開發環境可以修改 host 檔案,位置會在 C:\WINDOWS\system32\drivers\etc\hosts,來讓 domain 可以在開發機上生效,底下是我的 config
1 | 127.0.0.1 proxy.test.com |
接著在 Nginx Proxy Manager 上進行設定,就可以看到已經 proxy 成功了。
Nginx Proxy Manager 設定
Nginx GIXY
Gixy 是一款專為 Nginx 配置設計的自動化缺陷檢測工具,主要目標是避免錯誤和配置導致資安漏洞。它能有效幫助我們提升 Nginx 配置的安全性。
有一個練習用的 Repo vulnerable-nginx 可以拿來測試常見的問題。
- url normalization 改變 URL
- / 有差,盡量補上 slash 避免發生意外
- https://nginx.org/en/docs/http/ngx_http_core_module.html#location
- 反向代理到後端的 URL 有沒有路徑解析不一致
$uri: current URI in request, normalized
The value of $uri may change during request processing, e.g. when doing internal redirects, or when using index files.
使用 Nginx GIXY 分析結果如下:
1 | location /cats { |
1 | (base) PS C:\Users\yencheng> gixy C:\nginx-1.18.0\conf\nginx.conf |
Nginx 監控報表
有效率地監控 Nginx 服務的運行狀況至關重要。目前我有使用過最簡單的方式有兩個,來提供 Nginx 監控報表:
- 透過 Elastic 提供的 Filebeat 和 Metricbeat 可以從狀態、日誌即時地去監控 Nginx
- 使用開源的 GoAccess 加上系統排程定時更新資料
Elastic Metricbeat
之前剛好使用過 Elastic 相關 Solution,發現透過簡單的配置就能夠知道目前伺服器的狀況,詳細的教學歡迎參考這篇文章: Elastic Metricbeat 搭配 Kibana 來監控 Nginx 伺服器狀態,就像下圖就是系統預設提供的樣板,可以簡單即時去監控 Nginx 的流量、記憶體、處理器當下使用量。
Metricbeat + Kibana
Elastic Filebeat
那如果需要分析 Log 並產生報表呢? 當然也可以透過 Elastic 相關 Solution,透過 Filebeat 傳送 Nginx Access Log 到 Elasticsearch 中,最後透過 Kibana 即時監看相關分析。
Filebeat + Kibana
GoAccess
GoAccess 是一套開源的監控工具,能夠分析 Log 並且產生報表的靜態網頁,是 Nginx 日誌分析的利器。不過由於是靜態網頁,所以使用上就需要透過設定作業系統排程來定時跑腳本更新頁面。
- 透過指令安裝
sudo apt-get updatesudo apt-get install goaccess
- 透過指令直接產生
goaccess -f /var/log/nginx/access.log
GoAccess Dashboard
FAQ:Nginx 管理與監控常見問題
Q1:Nginx Proxy Manager 適合用於正式生產環境嗎?
A:Nginx Proxy Manager 教學 中提到的 GUI 介面極大降低了維護門檻,對於中小型專案或開發/測試環境非常理想。然而,在超大規模或對效能有極致要求的生產環境中,高品質的建議依然是使用傳統的文字配置檔進行微調,以獲得最佳的資源利用率與更細緻的權限卡控。
Q2:GIXY 掃描出的 alias_traversal 問題該如何修正?
A:這通常是因為 location 指令與 alias 路徑的結尾不一致所致。高品質的修正方式是:確保 location /cats/ 與 alias /data/cats/ 同時具備(或同時不具備)結尾的斜線 /。若 location 缺少斜線而 alias 具備,攻擊者可能透過 ../ 存取到非預期的父目錄,造成嚴重的 網站安全性提升 破口。
Q3:GoAccess 與 Elastic Stack (ELK) 兩者該如何抉擇?
A:如果您追求快速、簡單且佔用資源極低,GoAccess 日誌分析 是高品質的輕量選擇,它能秒級產生 HTML 報表。但如果您需要長期保存日誌、進行跨伺服器的複雜關聯查詢,或建立更進階的資安告警,則建議部署完整的 Nginx 監控報表 系統(如 ELK Stack),以滿足高品質的運維需求。
喜歡這篇文章,請幫忙拍拍手喔 🤣
