2020 年 12 月 29 日 2020 年 12 月 29 日
您可能需要防止未經授權訪問您網站上的某些文件或目錄。為此,您可以輕鬆地為這些目錄設置基本身份驗證。本文介紹如何使用 NGINX 對目錄進行密碼保護。
如何在 Nginx 中使用密碼保護目錄
以下是使用 NGINX 密碼保護目錄的步驟。
1. 安裝 Apache 實用程序
NGINX 文件和目錄應該使用 htpasswd 實用程序進行密碼保護。所以你需要安裝 apache2-utils 或 httpd-tools。打開終端並運行以下命令
# yum install httpd-tools [RHEL/CentOS] $ sudo apt install apache2-utils [Debian/Ubuntu]
另請閱讀:NGINX 限制對目錄和子目錄的訪問
2. 創建用戶/密碼
然後運行 htpasswd 命令創建一個允許訪問該網站的用戶。用您選擇的用戶名替換下面的開發人員。
# htpasswd -c /etc/nginx/conf.d/.htpasswd developer
使用 -c 選項指定密碼文件位置。 按 Enter 鍵,系統將提示您輸入密碼。
例如,創建另一個用戶時,不要指定密碼文件的位置。
# htpasswd /etc/nginx/conf.d/.htpasswd developer2
另請閱讀:NGINX 限制對 URL 的訪問
3.打開NGINX配置文件
打開終端並運行以下命令以打開 NGINX 服務器配置文件。
$ sudo vi /etc/nginx/nginx.conf
如果您為您的網站配置了另一個虛擬主機(例如 www.example.com),請在例如 /etc/nginx/sites-enabled/website.conf 中打開其配置
$ sudo vi /etc/nginx/sites-enabled/website.conf
或者,您可以打開默認的虛擬主機配置文件。
$ sudo vi /etc/nginx/sites-enabled/default
另請閱讀:如何配置 NGINX 日誌輪換
4.受密碼保護的NGINX
要對目錄、某些網頁或整個網站進行密碼保護,您必須在 NGINX 服務器配置中使用 auth_basic 和 auth_basic_user_file 指令。
例如,要為虛擬主機(整個 http 塊)配置基本身份驗證,請將上述兩個指令添加到 http 塊,如下所示。
http{ ... auth_basic "Restricted Access!"; auth_basic_user_file /etc/nginx/conf.d/.htpasswd; ... }
在上面的代碼中,我們在 auth_basic_user_file 指令中指定了密碼文件的路徑,並在 auth_basic 指令中指定了要顯示的消息。
同樣,這是保護服務器塊的代碼,即為您的網站或域實現基本身份驗證的代碼。
server{ ... auth_basic "Restricted Access!"; auth_basic_user_file /etc/nginx/conf.d/.htpasswd; ... }
您還可以通過將 auth_basic 和 auth_basic_user_file 指令添加到目錄的位置塊來將 auth_basic 和 auth_basic_user_file 指令添加到特定的 Web 目錄/子目錄(例如 /admin)。
location /admin/ { ... auth_basic "Restricted Access!"; auth_basic_user_file /etc/nginx/conf.d/.htpasswd; ... }
另請閱讀:如何修復 NGINX Worker 連接不足
5.重啟NGINX服務器
通過運行以下命令檢查更新配置文件的語法:
$ sudo nginx -t
如果沒有錯誤,請運行以下命令重新啟動 NGINX 服務器:
$ sudo service nginx reload #debian/ubuntu $ systemctl restart nginx #redhat/centos
另請閱讀:如何在 NGINX 中禁用 ETag
6.檢查基本認證
打開瀏覽器並轉到受保護的 URL(例如 www.example.com/admin)。將顯示以下驗證屏幕。

CodePre 允許您輕鬆地可視化您的數據並在實時儀表板中對其進行監控。 免費試用 CodePre。