步驟1:建立保存用戶名和密碼的文件html
首先,咱們須要建立一個文件來保存咱們的用戶名和密碼組合。您能夠經過使用服務器上可能已有的OpenSSL實用程序來完成此操做。或者,您能夠使用apache2-utils軟件包中包含的專用htpasswd實用程序(Nginx密碼文件使用與Apache相同的格式)。選擇你最喜歡的方法nginx
1. 使用OpenSSL實用程序建立密碼文件apache
若是您的服務器上安裝了OpenSSL,則能夠建立沒有附加軟件包的密碼文件。咱們將在/ etc / nginx配置目錄中建立一個名爲.htpasswd的隱藏文件來存儲咱們的用戶名和密碼組合。 服務器
您能夠使用此命令向該文件添加用戶名。咱們使用sammy做爲咱們的用戶名,但您能夠使用任何您想要的名稱:網絡
sudo sh -c "echo -n 'sammy:' >> /etc/nginx/.htpasswd"工具
接下來,輸入如下內容爲用戶名添加加密的密碼條目:網站
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd" 加密
您能夠重複此過程以獲取更多用戶名。您能夠經過鍵入如下內容來查看用戶名和加密密碼是如何存儲在文件中的:spa
cat /etc/nginx/.htpasswd rest
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