Nginx中使用htpasswd配置Http認證

爲了增強網站的安全性,可以通過設置HTTP認證的方式實現,而nginx的ngx_http_auth_basic_module模塊爲我們提供了方便。訪問者在瀏覽默寫模塊或者網頁的時候,只有通過認證才能正常顯示,否則會報401 Authorization Required,認證錯誤時會報403。如下圖:

這裏寫圖片描述

下面來說一下實現方式:

安裝httpd

yum -y install httpd 

創建認證數據文件

[root@ZhOu nginx]# htpasswd -c /usr/opt/nginx/passwd.db root
New password: 
Re-type new password: 
Adding password for user root
[root@ZhOu nginx]# cat passwd.db 
root:14W4BSbnMrVEg
[root@ZhOu nginx]# 

執行上面語句,如上下圖所示,密碼經過加密後保存在passwd.db文件中。

nginx中配置auth_basic 和auth_basic_user_file

這裏寫圖片描述

重啓nginx

[root@ZhOu nginx]# nginx -t  //檢查配置是否正常
nginx: the configuration file /usr/opt/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/opt/nginx/nginx.conf test is successful
[root@ZhOu nginx]# nginx -s reload   //平滑重啓

打開網頁,就會看到最開始的效果圖。
  

nginx basic auth

主要包含兩個值:auth_basic 和auth_basic_user_file

  • auth_basic
    語法: auth_basic string | off;
    默認值: auth_basic off;
    配置段: http, server, location, limit_except
    默認表示不開啓認證,後面如果跟上字符,這些字符會在彈窗中顯示。
      
  • auth_basic_user_file
    語法: auth_basic_user_file file;
    默認值: —
    配置段: http, server, location, limit_except

htpasswd

基本格式:   

  • htpasswd [-cmdpsD] passwordfile username
  • htpasswd -b[cmdpsD] passwordfile username password
  • htpasswd -n[mdps] username
  • htpasswd -nb[mdps] username password

參數說明:

  • b
    使用批處理方式,從命令行中獲得密碼,而不顯示提示要求輸入。 此選項的使用應該極爲謹慎,因爲命令行中的密碼是清晰可見的。
      
  • c
    建立passwdfile文件。如果passwdfile已經存在,則它被重寫並截斷。 此選項不能與-n選項同時使用。
      
  • n
    在標準輸出設備上顯示結果,而不更新文件。 用於生成可以爲Apache非文本輸出存儲格式所接受的密碼記錄。 此選項在命令行中的語法有所改變,因爲passwdfile參數(通常是第一個)被省略了。 此選項不能與-c選項同時使用。

  • m
    使用MD5加密密碼。在Windows, Netware 和TPF上,這是默認的。
      

  • d
    使用crypt()加密密碼。在除了Windows, Netware和TPF的平臺上(比如linux),這是默認的。 雖然它在所有平臺上可以爲htpasswd所支持, 但是在Windows, Netware和TPF上不能爲httpd服務器所支持。

  • s
    使用SHA加密密碼。 它是爲了方便轉入或移植到使用LDAP Directory Interchange Format (ldif)的Netscape而設計的。
      

  • p
    使用純文本的密碼。雖然在所有平臺上htpasswd都可以建立這樣的密碼, 但是httpd後臺只在Windows, Netware和TPF上支持純文本的密碼。
      
  • passwdfile
    包含用戶名和密碼的文件的名稱。 如果使用了-c,而此文件不存在則建立,如果已經存在,則重寫並截斷此文件。
      
  • username
    需要在passwdfile中建立或更新的用戶名。 如果此文件中username不存在,則增加一項,如果已經存在,則改變其密碼。
      
  • password
    將被加密並存儲到文件中的純文本的密碼。僅用於和-b選項同時使用。

注:htpasswd所管理的文件可以包含兩種類型的密碼,有些用戶的密碼使用MD5加密的,而同一個文件中的其他用戶是用crypt()加密的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章