前言
有的時候你會想將你的網站啟用帳號密碼登入,但你不一定會想要使用 PHP、JSP、ASP 這類的程式語言來實作他。這個時候不妨可以試試 Nginx 內建的簡易認證功能,來達成這樣的需求。
操作步驟
1. 設定帳號密碼
首先我們必須先設定我們的帳號密碼。這裡我建立一個名為 charlie
的帳號,並將他寫到 /etc/nginx/.htpasswd
裡面。
sudo sh -c "echo -n 'charlie:' >> /etc/nginx/.htpasswd"
接著我們要設定他的密碼,一樣是寫到 /etc/nginx/.htpasswd
裡面。在操作這行命令的時候,他會請你輸入兩次密碼。
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"
這個時候,/etc/nginx/.htpasswd
裡面可能會看起來像是這樣。
root@nginx:/etc/nginx# cat /etc/nginx/.htpasswd
charlie:$apr1$nHAInJaA$gxtFg7HMLb2yeqJVM2oTW1
root@nginx:/etc/nginx#
2. 編輯網站設定檔
接著,我們要編輯網站設定檔,前往資料夾並編輯他。(這邊假設檔案名稱是 example
)
cd /etc/nginx/sites-enabled && vim example
在設定檔中加入幾行文字。
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
最終,整份檔案可能會看起來像是這樣:
server {
listen 80;
server_name www.example.com;
server_tokens off;
more_set_headers Server;
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
try_files $uri $uri/ =404;
}
}
4. 重啟 Nginx
存檔退出後,我們需要重新啟動 Nginx。
sudo nginx -t && sudo systemctl restart nginx
檢視成果
現在,你的網站應該可以開始使用帳號密碼登入囉!打開網站,你應該會看到類似這樣的畫面。