使用htpasswd實現Nginx驗證訪問


Nginx是一個高性能的WEB服務器,越來越多的用戶使用,如果您的某個站點不希望對外公開(比如PHPMyAdmin),可以使用htpasswd實現Nginx驗證訪問。

安裝htpasswd

htpasswd是Apache密碼生成工具,Nginx支持auth_basic認證,因此我門可以將生成的密碼用於Nginx中,輸入一行命令即可安裝:

yum -y install httpd-tools 

參數如下:

-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配置文件中(通常是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加密方式。

在原有密碼文件中增加下一個用戶

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM