2020 年 12 月 29 日 2020 年 12 月 29 日
您可能需要防止未經授權訪問您網站上的某些文件或目錄。這使得為這些目錄設置基本身份驗證變得容易。在本文中,我們將了解如何使用 NGINX 對目錄進行密碼保護。
如何使用 Nginx 對目錄進行密碼保護
在 NGINX 中使用密碼保護您的目錄:
1. 安裝 Apache 實用程序
您必須使用 htpasswd 實用程序對 NGINX 文件和目錄進行密碼保護。因此,您需要安裝 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 指令添加到特定的 Web 目錄/子目錄(例如 / admin),請將 auth_basic 和 auth_basic_user_file 指令添加到該目錄的位置塊。
location /admin/ { ... auth_basic "Restricted Access!"; auth_basic_user_file /etc/nginx/conf.d/.htpasswd; ... }
另請閱讀:如何修復不充分的 NGINX 工作程序連接
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。