使用htpasswd實現Nginx驗證訪問

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 便可。

相關文章
相關標籤/搜索