Apache

官方文檔:http://httpd.apache.org/docs/

一、.htaccess文件的理解

詳情:https://baike.baidu.com/item/htaccess/1645473?fr=aladdin

  • htaccess文件是Apache服務(wù)器中的一個(gè)配置文件。.htaccess文件(或者"分布式配置文件")提供了針對(duì)每個(gè)目錄改變配置的方法,即在一個(gè)特定的目錄中放置一個(gè)包含指令的文件,其中的指令作用于此目錄及其所有子目錄。
  • 不建議使用.htaccess文件。.htaccess文件應(yīng)該被用在內(nèi)容提供者需要針對(duì)特定目錄改變服務(wù)器的配置而又沒(méi)有root權(quán)限的情況下。如果服務(wù)器管理員不愿意頻繁修改配置,則可以允許用戶通過(guò).htaccess文件自己修改配置。

二、身份驗(yàn)證與授權(quán)

1、 創(chuàng)建密碼文件
# htpasswd -c /usr/local/apache/passwd/passwords rbowen
New password: mypassword
Re-type new password: mypassword
Adding password for user rbowen
2、 實(shí)現(xiàn)允許通過(guò)密碼驗(yàn)證查看文件夾
用文件保存密碼
AuthType Basic
AuthName "Restricted Files"
# (Following line optional)
AuthBasicProvider file
AuthUserFile "/usr/local/apache/passwd/passwords"
Require user rbowen
用數(shù)據(jù)庫(kù)保存密碼(比用文件保存密碼效率高)
<Directory "/www/docs/private">
    AuthName "Private"
    AuthType Basic
    AuthBasicProvider dbm
    AuthDBMUserFile "/www/passwords/passwd.dbm"
    Require valid-user
</Directory>
AuthType

詳細(xì)內(nèi)容鏈接:http://httpd.apache.org/docs/2.4/en/mod/mod_authn_core.html#authtype
描述:給目錄選定認(rèn)證類(lèi)型
語(yǔ)法:AuthType None|Basic|Digest|Form
語(yǔ)境:Directory、 .htaccess
備注:要實(shí)現(xiàn)身份驗(yàn)證,還需要使用AuthName和Require指令。如果沒(méi)有給子目錄指定新的認(rèn)證類(lèi)型,則子目錄繼承上級(jí)目錄的認(rèn)證類(lèi)型

AuthName

描述:設(shè)置了使用認(rèn)證的域(Realm)
作用:

  • 此域會(huì)出現(xiàn)在顯示給用戶的密碼提問(wèn)對(duì)話框中
  • 幫助客戶端程序確定應(yīng)該發(fā)送哪個(gè)密碼。
AuthBasicProvider

描述:設(shè)置該區(qū)域認(rèn)證的方式
語(yǔ)法:AuthBasicProvider provider-name [provider-name] ...
默認(rèn):AuthBasicProvider file
語(yǔ)境:Directory、 .htaccess
備注:查詢提供者(provider),直到提供者找到所請(qǐng)求的用戶名的匹配為止,此時(shí)唯一的提供者將嘗試檢查密碼。驗(yàn)證密碼失敗不會(huì)導(dǎo)致將控制傳遞給后續(xù)提供程序。

模塊名 說(shuō)明 參數(shù)
mod_authn_dbm 模塊提供的DBM數(shù)據(jù)庫(kù)認(rèn)證支持 dbm
mod_authn_file 模塊提供的純文本文件認(rèn)證支持 file
mod_authn_dbd 模塊提供的SQL數(shù)據(jù)庫(kù)認(rèn)證支持 dbd
mod_authnz_ldap 模塊提供的LDAP服務(wù)進(jìn)行認(rèn)證支持 ldap
AuthUserFile

描述:設(shè)置了密碼文件的位置,也就是我們用htpasswd建 立的文件。
備注:如果用戶很多則認(rèn)證速度會(huì)很慢,因?yàn)閷?duì)每個(gè)請(qǐng)求都必須搜索這個(gè)純文本文件,對(duì)此,Apache還支持把用戶信息存入快速的數(shù)據(jù)庫(kù)文件,mod_authn_dbm模 塊提供了AuthDBMUserFile指 令,并可以用dbmmanage程 序建立和操作這些數(shù)據(jù)庫(kù)。

Require

描述:設(shè)置了允許訪問(wèn)受保護(hù)區(qū)域的用戶
備注:在大多數(shù)情況下,一個(gè)完整的認(rèn)證和授權(quán)的配置,Require必須附有 AuthName,AuthType和 AuthBasicProvider或 AuthDigestProvider 指令以及諸如 AuthUserFile 和AuthGroupFile以正常工作(以定義用戶和組)。

語(yǔ)法 作用
Require all granted 無(wú)條件接入。
Require all denied 訪問(wèn)被無(wú)條件拒絕。
Require env env-var [env-var] ... 只有在給定的環(huán)境變量被設(shè)置的情況下才允許訪問(wèn)。
Require method http-method [http-method] ... 訪問(wèn)只允許給定的HTTP方法。
Require expr expression 如果表達(dá)式計(jì)算結(jié)果為true,則允許訪問(wèn)。
Require user userid [userid] ... 只有指定的用戶可以訪問(wèn)資源。
Require group group-name [group-name] ... 只有指定組中的用戶才能訪問(wèn)資源。
Require valid-user 所有有效的用戶都可以訪問(wèn)資源。
Require ip 10 172.20 192.168.2 指定IP地址范圍內(nèi)的客戶端可以訪問(wèn)資源。
3、實(shí)現(xiàn)多人訪問(wèn)
  • 如果想允許多人訪問(wèn),那么就必須建立一個(gè)組文件以確定組中的用戶。其格式很簡(jiǎn)單,可以用你喜歡的編輯器建立。文件內(nèi)容如下:
    GroupName: rbowen dpitts sungo rshersey
    其格式為每個(gè)組一行,用戶名用空格隔開(kāi)
  • 向已有的密碼文件中增加一個(gè)用戶,可以輸入:
    htpasswd /usr/local/apache/passwd/passwords dpitts
    程序的提示和上面的一樣,但是它會(huì)追加到已有的文件中,而不是建一個(gè)新文件(參數(shù) -c 可以強(qiáng)制建立新的密碼文件)。
  • 修改配置文件
AuthType Basic
AuthName "By Invitation Only"
# Optional line:
AuthBasicProvider file
AuthUserFile "/usr/local/apache/passwd/passwords"
AuthGroupFile "/usr/local/apache/passwd/groups"
Require group GroupName

現(xiàn)在,GroupName組中的成員都在password文件中有一個(gè)相應(yīng)的記錄, 從而允許他們輸入正確的密碼進(jìn)行訪問(wèn)。

Allow和Deny指 令可以允許或拒絕來(lái)自特定主機(jī)名或主機(jī)地址的訪問(wèn),同時(shí),Order指 令告訴Apache處理這兩個(gè)指令的順序,以改變過(guò)濾器。

4、<RequireAll>、<RequireAny>、<RequireNone>

Apache2.4使用require指令代替Order、Allow、Deny指令的組合。但是Apache2.4將Order、Allow、Deny指令移到mod_access_compat模塊做兼容。

  • <RequireAll></RequireAll>用于包含一組授權(quán)指令,其中沒(méi)有任何一個(gè)指令失敗,并且至少一個(gè)授權(quán)指令必須成功以使<RequireAll>指令成功。
  • <RequireAny></RequireAny>用于包含一組授權(quán)指令,至少一個(gè)授權(quán)指令必須成功以使<RequireAny>指令成功。
  • < RequireNone ></RequireNone >用于包含一組授權(quán)指令,所有指令都不成功以使< RequireNone >指令成功。
  • Order控制Allow和Deny指令的執(zhí)行順序,后執(zhí)行的規(guī)則會(huì)覆蓋先執(zhí)行的規(guī)則。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容