如何在 Nginx 中使用密碼保護目錄


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。