最後的效果就類似(不同瀏覽器的介面有所不同):
如果認證失敗,就會報http錯誤:401 authorization required。
要實現這樣的功能,就需要更改伺服器的配置,並設定好用於登入的使用者名稱和密碼。
首先我們需要更改網站的nginx的server配置,ubuntu伺服器的話這個設定檔通常位於/etc/nginx/sites-enabled/,例如我這裡就使用預設的設定檔/etc/nginx/sites-enabled/ default來做一個例子:
複製程式碼 程式碼如下:
server {
server_name www.fancycedar.info
root /www/fancycedar
# ...
location / {
# 新增下面兩行
auth_basic "restricted";
auth_basic_user_file htpasswd;
# ...
#}
# ...
}
接下來需要建立htpasswd文件,這裡有一些細節要注意:
htpasswd的路徑
和nginx.conf在同一級目錄即可。 ubuntu伺服器的話通常在/etc/nginx/下面。
htpasswd的內容
每一行為一個用戶,格式為username:password。但要注意,這裡的password不是明文,而是將password進行crypt(3)加密後的字串。
你可以使用一段php程式碼來產生htpasswd中的password:
複製程式碼 程式碼如下:
// 密碼明文
$password = 'some password' ;
// 加密密碼
$password = crypt($password, base64_encode($password));
// 取得加密後的密碼
echo $password;
接著將字串寫入htpasswd檔案:
複製程式碼 程式碼如下:
username1:xucqmk13tfooe
username2:yxtfb3xwkombm
...
htpasswd的權限
需要更改htpasswd檔案的權限,執行下列指令:
複製程式碼 程式碼如下:
##sudo chown root:www-data htpasswd sudo chmod 640 htpasswd
當上面的準備工作都做好之後,我們就可以重新載入或重啟nginx伺服器了:
# or
sudo /etc/init.d/nginx restart
#
以上是Nginx怎麼用htpasswd對網站進行密碼保護的詳細內容。更多資訊請關注PHP中文網其他相關文章!