步驟1:創建保存用戶名和密碼的文件
首先,我們需要創建一個文件來保存我們的用戶名和密碼組合。您可以通過使用服務器上可能已有的OpenSSL實用程序來完成此操作。或者,您可以使用apache2-utils軟件包中包含的專用htpasswd實用程序(Nginx密碼文件使用與Apache相同的格式)。選擇你最喜歡的方法
1. 使用OpenSSL實用程序創建密碼文件
如果您的服務器上安裝了OpenSSL,則可以創建沒有附加軟件包的密碼文件。我們將在/ etc / nginx配置目錄中創建一個名為.htpasswd的隱藏文件來存儲我們的用戶名和密碼組合。
您可以使用此命令向該文件添加用戶名。我們使用sammy作為我們的用戶名,但您可以使用任何您想要的名稱:
sudo sh -c "echo -n 'sammy:' >> /etc/nginx/.htpasswd"
接下來,輸入以下內容為用戶名添加加密的密碼條目:
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"
您可以重復此過程以獲取更多用戶名。您可以通過鍵入以下內容來查看用戶名和加密密碼是如何存儲在文件中的:
cat /etc/nginx/.htpasswd
Output
sammy:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1
2. 使用Apache實用程序創建密碼文件
盡管OpenSSL可以對Nginx身份驗證的密碼進行加密,但許多用戶發現使用專用的實用程序更容易。在apache2-utils包中找到的htpasswd實用程序可以很好地使用該功能。
輸入以下命令,在服務器上安裝apache2-utils軟件包:
sudo apt-get install apache2-utils
現在,您可以訪問htpasswd命令。我們可以使用它來創建一個Nginx可以用來驗證用戶的密碼文件。我們將在/ etc / nginx配置目錄中為此目的創建一個名為.htpasswd的隱藏文件。
我們第一次使用這個工具時,我們需要添加-c選項來創建指定的文件。我們在命令末尾指定一個用戶名(在這個例子中是sammy)在文件中創建一個新的條目:
sudo htpasswd -c /etc/nginx/.htpasswd sammy
系統會要求您提供並確認用戶的密碼。
為希望添加的其他用戶省略-c參數:
sudo htpasswd /etc/nginx/.htpasswd another_user
步驟2:配置Nginx密碼驗證
1. 現在我們有一個文件,其中的用戶和密碼是Nginx可以讀取的格式,我們需要配置Nginx在提供受保護的內容之前檢查該文件。
首先打開您希望添加限制的服務器塊配置文件。對於我們的示例,我們將使用通過Ubuntu的Nginx包安裝的默認服務器塊文件:
sudo nano /etc/nginx/sites-enabled/default
要設置身份驗證,您需要決定要限制的上下文。在其他選擇中,Nginx允許您在服務器級別或特定位置內設置限制。在我們的示例中,我們將使用位置塊限制整個文檔根目錄,但是您可以修改此列表以僅針對網絡空間中的特定目錄:
在此位置塊中,使用auth_basic指令打開身份驗證並選擇在提示憑據時向用戶顯示的領域名稱。我們將使用auth_basic_user_file指令將Nginx指向我們創建的密碼文件:
完成后保存並關閉文件。重新啟動Nginx以實施您的密碼策略:
sudo service nginx restart