在某些特定的環境下,我們希望nginx下的web站點在訪問時需要用戶輸入賬戶密碼才能訪問。以便拒絕那些不速之客。
其實,配置起來也很簡單,按照下面的步驟即可實現。
一、編輯虛擬主機配置文件。
server { listen 80; //監聽端口為80 server_name www.abc.com; //虛擬主機網址 location / { root sites/www1; //虛擬主機網站根目錄 index index.html index.htm; //虛擬主機首頁 auth_basic "secret"; //虛擬主機認證命名 auth_basic_user_file /usr/local/nginx/passwd.db; //虛擬主機用戶名密碼認證數據庫 } #省略其他配置 .... }
二、通過htpasswd命令生成用戶名及對應密碼數據庫文件。
[root@localhost /]#mkdir /usr/local/nginx [root@localhost /]#vi /usr/local/nginx/passwd.db [root@localhost /]# htpasswd -c /usr/local/nginx/passwd.db admin //創建認證信息,admin 為認證用戶名 New password: ******* //輸入認證密碼 Re-type new password: ******** //再次輸入認證密碼 Adding password for user admin [root@localhost /]# chmod 400 /usr/local/nginx/passwd.db //修改網站認證數據庫權限 [root@localhost /]# chown nginx. /usr/local/nginx/passwd.db //修改網站認證數據庫屬主和屬組 [root@localhost /]# cat /usr/local/nginx/passwd.db //可以看到通過htpasswd生成的密碼為加密格式 admin:x/J1o94NgIV2k
三、重新啟動nginx即可生效。
service nginx reload
通過上面的三個步驟即可完成在nginx下實現訪問web網站密碼認證保護的功能。