這裡說明如何啟用 Nginx 內建的 stub_status
模組,在網頁上顯示伺服器即時的負載狀況,方便管理者即時監控。
Nginx 網頁伺服器本身就有內建一個簡單的即時狀態顯示模組,只要開啟 stub_status
這個模組,就可以看到基本的伺服器狀態統計,其提供的資訊包含了:目前連線數量統計、連線與請求數量統計,以及目前請求數量統計。
以下是啟用
stub_status
模組的步驟。Step 1
雖然
stub_status
是 Nginx 內建的模組,但是 Nginx 在編譯時並不會自動把它納入,所以在使用前要先檢查自己的 Nginx 編譯版本是否有納入這個功能:
nginx -V 2>&1 | grep -o with-http_stub_status_module
with-http_stub_status_module
若輸出有看到 with-http_stub_status_module
就表示沒問題。若是沒有的話,您可能就要重新安裝有支援 stub_status
的版本,或是自己重新編譯,然後在編譯時加入 --with-http_stub_status_module
選項。
Step 2
在 Nginx 網站的設定檔中,加入一段 location
的設定:
server { # ... location /nginx_status { # 啟用 stub_status 模組 stub_status on; # 關閉紀錄功能 access_log off; # 限制可存取的 IP 位址 allow 127.0.0.1; deny all; } }
除了使用 IP 位址的方式來限制存取之外,也可以使用帳號與密碼的方式:
server { # ... location /nginx_status { # 啟用 stub_status 模組 stub_status on; # 關閉紀錄功能 access_log off; # 設定帳號與密碼 auth_basic "closed site"; auth_basic_user_file /path/to/htpasswd; } }
關於 Nginx 帳號與密碼的設定方式,請參考 NGINX 設定密碼認證與限制可存取的 IP 位址。
Step 3
設定好之後,檢查 Nginx 的設定檔是否正確:
service nginx configtest
* Testing nginx configuration [ OK ]
確認無誤後,重新載入新的 Nginx 設定:
service nginx reload
Step 4
打開剛剛設定的網址,就可以看到即時的 Nginx 伺服器狀態了。
Active connections: 72 server accepts handled requests 606761 606761 3034070 Reading: 0 Writing: 2 Waiting: 69
以下是各個數值的含意:
- Active connections:目前連線數,這個值包含 Waiting 的數量。
- server accepts handled requests:第一個值是伺服器接受的連線數,第二個值是伺服器已經處理的連線數,第三個值則是伺服器已經處理的請求數。若將第三個數值除以第二個數值,就會得到平均每個連線的請求數(
3034070 / 606761 = 5.0
)。 - Reading:目前正在讀取請求表頭的請求數。
- Writing:目前正在讀取請求主體、處理與回應的請求數。
- Waiting:keep-alive 的連線數,這個值會跟 keepalive_timeout 的設定值有關,這個數值通常不太會影響伺服器效能,可以不用太在意。
參考資料:DATADOG、EasyEngine、Tecmint
vincent
您好!請問我照著您的步驟,為何會出現『找不到網頁』的錯誤訊息呢?