mkdir -p /var/www/html/protected
chown -R apache:apache /var/www/html/protected
Options Indexes FollowSymLinks
AllowOverride AuthConfig
Require all granted
關鍵:AllowOverride AuthConfig 允許 .htaccess 覆蓋認證設定。生產環境建議直接在 httpd.conf 或 vhost.conf 內配置 <Directory> 區塊,避免每次請求掃描 .htaccess 影響效能。
# /var/www/html/protected/.htaccess
AuthName "Internal Admin Area"
AuthType Basic
AuthUserFile /etc/httpd/.htpasswd_admin
Require valid-user
# 或限定用戶:Require user alice bob
# 首次建立 (-c 建立新檔),使用 bcrypt (-B) 或 SHA256 (-s)
htpasswd -cB /etc/httpd/.htpasswd_admin alice
# 新增用戶 (不加 -c)
htpasswd -B /etc/httpd/.htpasswd_admin bob
# 修改密碼
htpasswd -B /etc/httpd/.htpasswd_admin alice
# 刪除用戶
htpasswd -D /etc/httpd/.htpasswd_admin bob
# 列出用戶
htpasswd -v /etc/httpd/.htpasswd_admin alice
安全建議:密碼檔置於 DocumentRoot 之外 (如 /etc/httpd/),檔名以 .ht 開頭 (Apache 預設拒絕存取)。權限 640 root:apache。
systemctl reload httpd
# 瀏覽器訪問 https://server/protected/ 應彈出基本認證對話框
# /etc/httpd/groups
admins: alice bob charlie
developers: david eve
# .htaccess
AuthGroupFile /etc/httpd/groups
Require group admins
| 配置方式 | 效能影響 | 建議場景 |
|---|---|---|
| .htaccess + AllowOverride | 每請求向上遞歸掃描 .htaccess,額外 syscall、I/O | 共享主機、無 httpd.conf 寫入權限、臨時測試 |
| httpd.conf/vhost.conf | 啟動時讀取一次,無運行期額外開銷 | 生產環境、自有伺服器、高併發 |
| mod_auth_dbd / mod_authn_dbd | 資料庫查詢開銷,可配合連線池 | 帳號頻繁異動、需即時生效、整合現有用戶庫 |
| mod_authnz_ldap / mod_auth_kerb | LDAP/Kerberos 查詢延遲,支援 SSO | 企業 AD/LDAP 整合、單點登入 |