nginx配置訪問密碼,讓用戶輸入用戶名密碼才能訪問(basicAuth)


 如果我們在 nginx 下搭建了一些站點,但是由於站點內容或者流量的關系,我們並不想讓所有人都能正常訪問,那么我們可以設置訪問認證。只有讓用戶輸入正確的用戶名和密碼才能正常訪問。效果如下:

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

生成密碼可以使用 htpasswd,或者使用 openssl 。下面以 htpasswd 為例。

 

一、安裝htpassed工具

1、通過yum安裝

yum -y install httpd-tools

 

2、設置用戶名和密碼,並把用戶名、密碼保存到指定文件中:

htpasswd -c [passwfile] [username]

注意:/usr/local/nginx/passwd 是生成密碼后的文件保存路徑(passwdfile),codeauth是用戶名(username)

輸入成功后用戶名codeauth,密碼我輸入的123,

 

查看最后生成的密碼文件的內容:(codeauth分號后的內容就是加密過的密碼)

 

 

二、修改nginx配置文件

找到 nginx 配置文件,因為我們要對整個站點開啟驗證,所以在配置文件中的第一個server修改如下:

server {
   listen 80;
   server_name  localhost;
   .......
 
   #新增下面兩行 auth_basic "Please input password"; #這里是驗證時的提示信息 
   auth_basic_user_file /usr/local/nginx/passwd;
 
   location /{
   .......
}

重啟nginx

 

 三、htpasswd 其他參數

 1、

 htpasswd [-cmdpsD] [passwdfile] [username]

 htpasswd -b[cmdpsD] [passwdfile] [username] [password]

 htpasswd -n[mdps] username

 htpasswd -nb[mdps] username password

 

 

htpasswd命令選項參數說明
-c 創建一個加密文件
-n 不更新加密文件,只將htpasswd命令加密后的用戶名密碼顯示在屏幕上
-m 默認htpassswd命令采用MD5算法對密碼進行加密
-d htpassswd命令采用CRYPT算法對密碼進行加密
-p htpassswd命令不對密碼進行進行加密,即明文密碼
-s htpassswd命令采用SHA算法對密碼進行加密
-b htpassswd命令行中一並輸入用戶名和密碼而不是根據提示輸入密碼
-D 刪除指定的用戶

 

2、新增一個用戶

htpasswd -b [passwdfile] [username] [passwd]

此時查看passwd 文件中的用戶和密碼

 

3、刪除用戶

htpasswd -D [passwdfile] [username]

 

此時查看passwdfile 中的用戶和密碼

 

 4、創建文件,添加用戶

htpasswd -bc [passedfile] [username]

此時的文件中的用戶

 

 

 本文轉載 https://blog.csdn.net/dream8062/article/details/78416234


免責聲明!

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



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