首頁 >運維 >Nginx >Nginx怎麼用htpasswd對網站進行密碼保護

Nginx怎麼用htpasswd對網站進行密碼保護

王林
王林轉載
2023-05-17 15:49:06947瀏覽

最後的效果就類似(不同瀏覽器的介面有所不同):

Nginx怎麼用htpasswd對網站進行密碼保護

如果認證失敗,就會報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

are you ready?

當上面的準備工作都做好之後,我們就可以重新載入或重啟nginx伺服器了:

#複製程式碼程式碼如下:

sudo /etc/init.d/nginx reload

# or
sudo /etc/init.d/nginx restart

#

以上是Nginx怎麼用htpasswd對網站進行密碼保護的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除