Apache-2.2

如何密碼提示某些 IP 並允許所有其他人使用 Apache 自由訪問?

  • May 18, 2012

已解決:這個想法是,如果訪客來自中國,他們必須通過基本身份驗證。如果您有任何其他 IP 地址,您可以輕鬆訪問該網站(包括代理)

//1400 rules....
SetEnvIf Remote_Addr 222.249.128.0/19 china
SetEnvIf Remote_Addr 222.249.160.0/20 china
SetEnvIf Remote_Addr 222.249.176.0/20 china
AuthType Basic
AuthName "Restricted"
AuthUserFile /www/passwd/users
Require valid-user
Order allow,deny
Allow from All
Deny from env=china
Satisfy any

只需添加“來自 myiprange 的允許”或“來自 myinternalnetwork.com 的允許”。“滿足任何要求”將需要有效使用者或允許來自。

請參閱:身份驗證、授權和訪問控制

通常,預設配置對每個人都具有不受限制的訪問權限

<Directory "/home/web/htdocs">
   Order allow,deny
   Allow from all
</Directory>

然後,您必須通過拒絕所有來強制對您的受限區域進行身份驗證,然後只允許這些子網,然後對它們實際如何進行身份驗證提出任何要求。全部滿足用於確保需要兩種訪問策略。

<Directory "/home/web/htdocs/restricted">
   Order Deny,Allow
   Deny from all
   Allow from 58.240.0.0/15
   Allow from 58.242.0.0/15
   Require valid-user
   Satisfy all
   AuthName "Restricted Area" 
   AuthType Basic 
   AuthUserFile /home/web/.htpasswds/.htpasswd 
   Require valid-user
</Directory>

警告!

每次我認為我理解了身份驗證的工作規則時,我都必須反複使用配置,直到我得到一些正確的細微差別。僅將其用作起點。重新閱讀有關 mod_auth 和 mod_access 的 apache 文件,特別注意 Order 指令。你的答案就在於此。

希望這會有所幫助,如果它與這個不匹配,請發布您的工作範例,因為這是 apache 食譜中的一個很好的食譜。

  • 編輯 -

上面的測試表明,除了必須提供認證的IP地址的人之外,限制區域是禁止的。

從您的問題中不清楚是否來自其他 IP 的使用者需要不受限制地訪問這個“受限區域”,或者他們是否只是被禁止?

引用自:https://serverfault.com/questions/33192