1. 程式人生 > >nginx配置訪問密碼,讓使用者輸入使用者名稱密碼才能訪問

nginx配置訪問密碼,讓使用者輸入使用者名稱密碼才能訪問

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

nginx 開啟訪問驗證

在 nginx 下,提供了 ngx_http_auth_basic_module 模組實現讓使用者只有輸入正確的使用者名稱密碼才允許訪問web內容。預設情況下,nginx 已經安裝了該模組。所以整體的一個過程就是先用第三方工具設定使用者名稱、密碼(其中密碼已經加過密),然後儲存到檔案中,接著在 nginx 配置檔案中根據之前事先儲存的檔案開啟訪問驗證。

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

1.安裝 htpasswd 工具

這裡直接 yum 進行安裝,你也可根據需要選擇編譯安裝:

1 [[email protected] ~]# yum  -y install httpd-tools

設定使用者名稱和密碼,並把使用者名稱、密碼儲存到指定檔案中:

1 2 3 4 [[email protected] ~]# htpasswd -c /usr/local/src/nginx/passwd coderschool New password:  Re-type new password:  Adding password for user coderschool 

注意:上面的 /usr/local/src/nginx/passwd 是生成密碼檔案的路徑,然後 coderschool 是使用者名稱,你可以根據需要自行設定成其它使用者名稱。執行命令後,會要求你連續輸入兩次密碼。輸入成功後,會提示已經為 conerschool 這個使用者添加了密碼。

我們可以看下最後生成的密碼檔案的內容:

1 2 [[email protected] ~]# cat /usr/local/src/nginx/passwd  coderschool:$apr1$DhlW8hIu$BXyCQ7hiEos1DiqgwEYcZ1

其中使用者名稱就是 coderschool ,分號後面就是密碼(已經加過密)。

2.修改 nginx 配置檔案

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

1 2 3 4 5 6 7 8 9 10 11 12 server { listen 80; server_name  localhost; ....... #新增下面兩行 auth_basic "Please input password"; #這裡是驗證時的提示資訊  auth_basic_user_file /usr/local/src/nginx/passwd; location /{ ....... }

然後重啟 nginx:

1 2 3 4 [[email protected] sbin]# ./nginx -t nginx: the configuration file /usr/local/src/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/src/nginx/conf/nginx.conf test is successful [[email protected] sbin]# ./nginx -s reload

以上都配置無誤後,你重新訪問你的站點,如果出現需要身份驗證的彈窗就說明修改成功了。下面介紹 htpasswd 命令的一些引數。

3.htpasswd選項引數

1 2 3 4 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 刪除指定的使用者

htpasswd例子

a、如何利用htpasswd命令新增使用者?

1 htpasswd -bc ./.passwd tonyzhang pass

在當前目錄下生成一個.passwd檔案,使用者名稱tonyzhang ,密碼:pass,預設採用MD5加密方式

b、如何在原有密碼檔案中增加下一個使用者?

1 htpasswd -b ./.passwd onlyzq pass

去掉c選項,即可在第一個使用者之後新增第二個使用者,依此類推

c、如何不更新密碼檔案,只顯示加密後的使用者名稱和密碼?

1 htpasswd -nb tonyzhang pass

不更新.passwd檔案,只在螢幕上輸出使用者名稱和經過加密後的密碼

d、如何利用htpasswd命令刪除使用者名稱和密碼?

1 htpasswd -D .passwd tonyzhang

e、如何利用 htpasswd 命令修改密碼?

1 2 htpasswd -D .passwd tonyzhang htpasswd -b .passwd tonyzhang pass
參考:http://onlyzq.blog.51cto.com/1228/5575

相關推薦

no