Linux進階之給nginx設置登錄用戶驗證


一、nginx開啟訪問驗證

使用nginx搭建的站點,如果不想讓所有人都能正常訪問,那么可以設置訪問認證,只有用戶輸入正確的用戶名和密碼才能正常訪問。

nginx下,提供了ngx_http_auth_basic_module 模塊實現讓用戶只有輸入正確的用戶名密碼才允許訪問web內容。默認情況下,nginx 已經安裝了該模塊。所以整體的一個過程就是先用第三方工具( htpasswd,或者使用 openssl)設置用戶名、密碼(其中密碼已經加過密),然后保存到文件中,接着在 nginx 配置文件中根據之前事先保存的文件開啟訪問驗證。

二、以htpasswd為例

1、安裝htpasswd工具

[root@ren5 ~]# yum -y install nginx           #安裝nginx

[root@ren5 ~]# yum -y install httpd-tools          #安裝httpd-tools

2、設置指定用戶及密碼

[root@ren5 ~]# cd /etc/nginx/

[root@ren5 nginx]# touch .passwd                    #創建生成密碼的文件

[root@ren5 nginx]# htpasswd -c /etc/nginx/.passwd ren5             #設置用戶名和密碼,並把用戶名、密碼保存到指定文件中

New password:

Re-type new password:

Adding password for user ren5

注意:上面的 /etc/nginx/.passwd 是生成密碼文件的路徑,然后ren5是用戶名,你可以根據需要自行設置成其它用戶名。運行命令后,會要求你連續輸入兩次密碼。輸入成功后,會提示已經為ren5這個用戶添加了密碼。

[root@ren5 nginx]# cat .passwd          #查看生成的密碼文件的內容

ren5:$apr1$Lna.yg7m$n6g9180iZQP7GXJ447CE0/             #用戶名ren5,冒號后面是密碼(已經加密)

3、修改nginx配置文件

[root@ren5 nginx]# vim nginx.conf            #在第一個server模塊下添加

#############################################

location / {

        auth_basic "Please input password";

        auth_basic_user_file /etc/nginx/.passwd;

        }

################################################

[root@ren5 nginx]# nginx -t          #檢查配置文件是否有誤

[root@ren5 nginx]# systemctl restart nginx              #重啟nginx

[root@ren5 nginx]# firewall-cmd --add-port=80/tcp               #添加防火牆端口

Success

4、瀏覽器訪問

出現身份驗證

3htpasswd 命令

三、htpasswd選項參數 

htpasswd [ -c ] [ -i ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -D ] [ -v ] passwdfile username

htpasswd -b [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -D ] [ -v ] passwdfile username password

htpasswd -n [ -i ] [ -m | -B | -d | -s | -p ] [ -C cost ] username

htpasswd -nb [ -m | -B | -d | -s | -p ] [ -C cost ] username password

1htpasswd命令選項參數說明:

    -c 創建一個加密文件

    -n 不更新加密文件,只將htpasswd命令加密后的用戶名,密碼顯示在屏幕上

    -m 默認htpassswd命令采用MD5算法對密碼進行加密

    -d htpassswd命令采用CRYPT算法對密碼進行加密

    -p htpassswd命令不對密碼進行進行加密,即明文密碼

    -s htpassswd命令采用SHA算法對密碼進行加密

    -b htpassswd命令行中一並輸入用戶名和密碼而不是根據提示輸入密碼

    -D 刪除指定的用戶

2htpasswd例子

1)用htpasswd命令添加用戶 

[root@ren5 nginx]# htpasswd -bc .passwd ren001 123

#在當前目錄下生成一個.passwd文件,用戶名ren001,密碼:123,默認采用MD5加密方式

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

[root@ren5 nginx]# htpasswd -b .passwd ren002 456

[root@ren5 nginx]# cat .passwd

ren001:$apr1$Ln1ZsyVn$2hn3VFqP0L5tNA1UCSU8F.

ren002:$apr1$hCiMb9jc$Z.m7ZgOBCj0ISeIieTaVy/

#去掉c選項,即可在第一個用戶之后添加第二個用戶,依此類推

3)不更新密碼文件,只顯示加密后的用戶名和密碼

[root@ren5 nginx]# htpasswd -nb ren002 456

ren002:$apr1$DT53A20W$YRS7p4j.1Wum9q0kG3OQv.

#不更新.passwd文件,只在屏幕上輸出用戶名和經過加密后的密碼

4)用htpasswd命令刪除用戶名和密碼

[root@ren5 nginx]# htpasswd -D .passwd ren002

Deleting password for user ren002

[root@ren5 nginx]# cat .passwd

ren001:$apr1$Ln1ZsyVn$2hn3VFqP0L5tNA1UCSU8F.

5)用 htpasswd 命令修改密碼

[root@ren5 nginx]# htpasswd -D .passwd ren001

Deleting password for user ren001

[root@ren5 nginx]# htpasswd -b .passwd ren001 123456

Adding password for user ren001


免責聲明!

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



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