nginx配置訪問密碼,輸入用戶名和密碼才能訪問


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

1. nginx 開啟訪問驗證

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

2. 以 htpasswd為例

1、安裝 htpasswd 工具

[sandu@bogon conf]$ sudo yum install httpd-tools

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

[sandu@bogon conf]$ sudo mkdir passwd
[sandu@bogon conf]$ sudo htpasswd -c passwd/passwd sandu
New password: 
Re-type new password: 
Adding password for user sandu
[sandu@bogon conf]$ cat passwd/passwd 
sandu:$apr1$J5Sg0fQD$KDM3Oypj8Wf9477PHDIzA0

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

[sandu@bogon conf]$ cat passwd/passwd 
sandu:$apr1$J5Sg0fQD$KDM3Oypj8Wf9477PHDIzA0

其中用戶名就是sandu,分號后面就是密碼(已經加過密)。

2、修改 nginx 配置文件

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

server {
    listen 80;
    server_name  localhost;
    .......
    #新增下面兩行
    auth_basic "Please input password"; #這里是驗證時的提示信息
    auth_basic_user_file passwd/passwd; # 這里是密碼文件,可以填寫絕對路徑
    location /{
    .......
    }

然后重啟 nginx:

[sandu@bogon conf]$ sudo systemctl reload openresty.service

以上都配置無誤后,你重新訪問你的站點,如果出現需要身份驗證的彈窗就說明修改成功了。

3、htpasswd 命令

htpasswd選項參數 :

htpasswd [-cmdpsD] passwordfile username
htpasswd -b[cmdpsD] passwordfile 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 刪除指定的用戶

4、htpasswd例子

  1. 如何利用htpasswd命令添加用戶?
    htpasswd -bc ./.passwd sandu pass
    在當前目錄下生成一個.passwd文件,用戶名sandu,密碼:pass,默認采用MD5加密方式
  2. 如何在原有密碼文件中增加下一個用戶?
    htpasswd -b ./.passwd sandu1 pass
    去掉c選項,即可在第一個用戶之后添加第二個用戶,依此類推
  3. 如何不更新密碼文件,只顯示加密后的用戶名和密碼?
    htpasswd -nb sandu pass
    不更新.passwd文件,只在屏幕上輸出用戶名和經過加密后的密碼
  4. 如何利用htpasswd命令刪除用戶名和密碼?
    htpasswd -D .passwd sandu
  5. 如何利用 htpasswd 命令修改密碼?
    htpasswd -D .passwd sandu
    htpasswd -b .passwd sandu pass


免責聲明!

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



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