開始前準備

本篇適合進階使用者. 以 aaPanel 8.0.6 繁體中文介面核對, 若仍為英文, 請先完成 切換繁體中文.

適用於 Nginx 網站的測試檔案區或管理資料夾. 正式使用帳密驗證前請先完成 HTTPS. 備份網站設定, 保留可用的面板與 SSH 連線, 不要一開始就限制整個網站根路徑.

這個版本的 限制訪問 可設定資料夾帳密; 拒絕訪問 是路徑與副檔名限制, 不是 IP 白名單. IP 白名單需要調整 Nginx 設定. 本篇先對 /private-demo/ 示範, 不套用到其他路徑.

01建立資料夾帳密保護

先在網站根目錄建立 private-demo 資料夾與一個可辨識的測試首頁. 進入 網站 > PHP項目 > Conf > 限制訪問, 保持 限制訪問 分頁, 點 添加限制訪問.

名稱 填 tutorial_private, 路徑 填 /private-demo/, 再設定專用 使用者名稱 與 密碼, 按 確定. 路徑是網站 URL 路徑, 不是硬碟的完整路徑. 這組帳密與 aaPanel 或 WordPress 帳密分開.

建立資料夾帳密保護的操作示意圖 放大圖片
建立資料夾帳密保護.

02先驗證帳密, 再處理存取錯誤

以未登入的無痕視窗訪問該目錄, 應要求帳密, 未提供正確帳密時回傳 401. 輸入正確帳密後才應看到測試內容. 另測試目錄內的圖片與子路徑, 確認沒有繞過保護.

若輸入正確密碼後反而回傳 500, 查看 錯誤日誌. 本次遇到驗證檔無法被網站服務讀取, 修正後才能登入. 只有當日誌明確指出該檔 Permission denied, 且已確認 Nginx 以 www 群組執行時, 才依下例修正指定路徑. 將 YOUR_SITE 改成實際站點目錄名稱, 不要改成全員可讀寫的 777.

chgrp www /www/server/pass /www/server/pass/YOUR_SITE \
  /www/server/pass/YOUR_SITE/tutorial_private.pass
chmod 750 /www/server/pass /www/server/pass/YOUR_SITE
chmod 640 /www/server/pass/YOUR_SITE/tutorial_private.pass
先驗證帳密, 再處理存取錯誤的操作示意圖 放大圖片
先驗證帳密, 再處理存取錯誤.

03在同一規則加入 IP 白名單

先保存設定副本. 在 文件 找到這個規則的 Nginx 檔案 /www/server/panel/vhost/nginx/dir_auth/YOUR_SITE/tutorial_private.conf, 以文字編輯器開啟. 在既有 location 的大括號內加入以下三行, 保留原本的 auth_basic, auth_basic_user_file 與其他設定, 不另建重複 location.

satisfy all;
allow 203.0.113.10;
deny all;

203.0.113.10 只是文件範例, 儲存前必須改成你要允許的實際公開來源 IP. 多個來源可逐行加入 allow, 最後才放 deny all. satisfy all 表示 IP 與帳密兩項都要通過. 使用 CDN 或其他代理時, 先確認 Nginx 看到的來源 IP 與可信任代理設定, 不要直接信任任意請求標頭.

按 保存 後在 SSH 檢查設定; 只有語法檢查成功才重新載入. 若失敗, 先復原這次修改. 日後透過面板修改同一規則, 需再次確認手動加入的限制是否仍存在.

/www/server/nginx/sbin/nginx -t && \
  /www/server/nginx/sbin/nginx -s reload
在同一規則加入 IP 白名單的操作示意圖 放大圖片
在同一規則加入 IP 白名單.

04分別測試允許與拒絕來源

應有的驗證結果
來源與帳密預期結果
白名單 IP, 未提供帳密401, 仍需登入.
白名單 IP, 正確帳密200, 可讀取預期內容.
非白名單 IP403, 即使知道密碼也不能通過 IP 限制.

本次已分別驗證以上三種結果. 測試首頁, 子目錄與不同檔案類型, 並確認其他網站路徑未受影響. 若把自己擋在外面, 使用保留的 SSH 或面板連線復原設定副本, 不要停用整台主機的防火牆來處理目錄規則.

分別測試允許與拒絕來源的操作示意圖 放大圖片
以允許來源和另一個來源分別驗證, 不只看規則是否儲存.

操作時需要協助?

告訴我們您停在哪個步驟, 由客服協助您確認.

聯絡客服
返回線上教學