Nginx是一個高性能的WEB服務器,愈來愈多的用戶使用,若是您的某個站點不但願對外公開(好比PHPMyAdmin),可使用htpasswd實現Nginx驗證訪問。php
安裝htpasswd
htpasswd是Apache密碼生成工具,Nginx支持auth_basic認證,所以我門能夠將生成的密碼用於Nginx中,輸入一行命令便可安裝:python
yum -y install httpd-tools
參數以下:linux
-c 建立passwdfile.若是passwdfile 已經存在,那麼它會從新寫入並刪去原有內容. -n 不更新passwordfile,直接顯示密碼 -m 使用MD5加密(默認) -d 使用CRYPT加密(默認) -p 使用普通文本格式的密碼 -s 使用SHA加密 -b 命令行中一併輸入用戶名和密碼而不是根據提示輸入密碼,能夠看見明文,不須要交互 -D 刪除指定的用戶
生成密碼
#進入home目錄 cd /home #生成密碼 htpasswd -c ./passwd username #執行上命令後會要求輸入兩次密碼,./passwd 是在當前目錄下建立密碼文件passwd ,username即爲須要設置的帳號
若是你不想安裝htpasswd,也能夠經過在線 htpasswd 生成器來完成。nginx
載入配置
接下來在Nginx配置文件中(一般是server段內),加入以下兩行,並重載Nginx(service nginx reload
)便可生效。服務器
auth_basic "Please input password"; #這裏是驗證時的提示信息 auth_basic_user_file /home/passwd;
訪問測試
再訪問站點,提示須要輸入用戶名和密碼才能夠訪問,此方法適合不宜公開的站點,好比PHPmyadmin,這樣可避免被弱口令掃描,無疑再上了一把鎖。工具
實例性能
利用htpasswd命令添加用戶測試
htpasswd -bc .passwd www.linuxde.net php
在bin目錄下生成一個.passwd文件,用戶名www.linuxde.net,密碼:php,默認採用MD5加密方式。加密
在原有密碼文件中增長下一個用戶url
htpasswd -b .passwd Jack 123456
去掉-c
選項,便可在第一個用戶以後添加第二個用戶,依此類推。
不更新密碼文件,只顯示加密後的用戶名和密碼
htpasswd -nb Jack 123456
不更新.passwd文件,只在屏幕上輸出用戶名和通過加密後的密碼。
利用htpasswd命令刪除用戶名和密碼
htpasswd -D .passwd Jack
利用htpasswd命令修改密碼
htpasswd -D .passwd Jack htpasswd -b .passwd Jack 123456
即先使用htpasswd刪除命令刪除指定用戶,再利用htpasswd添加用戶命令建立用戶便可實現修改密碼的功能。
實際樣例以下:
nginx配置:
server { listen 80; server_name kba.sche.cn; access_log /home/logs/nginx/kba.sche.cn/access_log main; error_log /home/logs/nginx/kba.sche.cn/error_log; log_not_found on; include conf/*.conf; location / { proxy_pass http://192.168.1.125:500; auth_basic "Basic Authentication"; auth_basic_user_file "/home/nginx/htpasswd/kba.htpasswd"; } }
生成密碼
建立密碼文件並新增用戶 htpasswd -c /home//nginx/htpasswd/kba.htpasswd tom 回車提示輸入兩次設置的密碼 新增其餘用戶,默認加密策略 htpasswd -b /home/nginx/htpasswd/kba.htpasswd jack Jk123
重啓nginx 便可。