Caddy 伺服器提供 basic_auth
指令,可用於保護特定目錄或檔案,要求使用者提供帳號與密碼才能存取。此機制使用 HTTP Basic Authentication,適合用於小型內部應用或基本保護需求,但應避免在未加密的 HTTP 連線上使用,建議搭配 HTTPS 確保安全性。
設定 basic_auth
在 Caddy 設定中,basic_auth
需要使用加密後的密碼,不能直接使用明文密碼。可使用 caddy hash-password
指令來產生密碼雜湊值。例如:
caddy hash-password --plaintext "your_password"
此指令會回傳一個加密過的密碼,可用於 Caddy 設定檔中。
Caddy 設定範例
1. 保護整個網站
若要為整個網站啟用帳號密碼驗證,設定如下:
example.com {
basic_auth {
# 使用者名稱 "Bob",密碼 "hiccup" 的加密後雜湊
Bob $2a$14$Zkx19XLiW6VYouLHR5NmfOFU0z2GTNmpkT/5qqR7hx4IjWJPDhjvG
}
respond "Welcome, {http.auth.user.id}" 200
}
當使用者存取 example.com
時,瀏覽器會彈出驗證視窗,要求輸入帳號與密碼。
2. 只保護特定路徑
若只想保護 /secret/
目錄,讓 Bob 可以存取,而其他人可存取網站的其他部分,設定如下:
example.com {
root * /srv
basic_auth /secret/* {
# 使用者名稱 "Bob",密碼 "hiccup" 的加密後雜湊
Bob $2a$14$Zkx19XLiW6VYouLHR5NmfOFU0z2GTNmpkT/5qqR7hx4IjWJPDhjvG
}
file_server
}
在此設定下,訪問 example.com/secret/
時,會要求使用者輸入帳號密碼;但 example.com/
或 example.com/public/
仍可自由存取。
注意事項
- 使用 HTTPS:HTTP Basic Authentication 會在請求標頭中傳送憑證,因此務必使用 HTTPS 保護資料傳輸。
- 密碼雜湊:Caddy 不接受明文密碼,請先使用
caddy hash-password
產生加密後的密碼。
- 適用版本:
basic_auth
在 Caddy v2.8.0 之前稱為 basicauth
,若使用舊版本,請注意指令名稱變更。
透過 basic_auth
,可以輕鬆為 Caddy 伺服器上的特定路徑或整個網站增加帳密保護,提升基本的安全性。