2014-10-06 75 views
0

我知道這是效率不高,但我的根htdocs目錄(即「/」)大的.htaccess蒙山禁止IP裏面,像這樣:apache 2.4 howto「不需要ip」每個虛擬主機?

<RequireAll> 
Require not ip 1.163.1.5 
Require not ip 1.163.192.83 
Require not ip 1.163.193.136 
... (4000+ IPs) 
</RequireAll> 

(它在分析scriptly更新訪問日誌文件:它掃描404 w00tw00t和腳本小子嘗試,看看我的意思)。當我添加新的IP時,使用.htaccess的理念將被動態更新和解析:-)

與許多公司一樣,我有一個公共虛擬主機在http:80上監聽多個ProxyPass規則,然後多個後端在本地主機(或局域網IP)上偵聽的站點。

目標顯然是配置反向代理中的所有安全性內容,就像大多數公司一樣。因此,如預期的那樣,對後端的每個請求都有127.0.0.1(或本地代理IP)作爲源IP。

但是我注意到這個配置沒有按預期工作:.htaccess的後端網站只有評估。不適用於正面的虛擬主機。完全相反,我需要做的! :/

我應該怎麼做才能使其僅適用於虛擬主機?什麼是最好的方法?我應該使用RewriteCond嗎?

回答

0

好的我發現這是不可能的,因爲RequireAll是用於目錄標籤。 解決辦法是:

# BANNED IPs 
    <IfModule rewrite_module> 
    RewriteEngine On 
    RewriteMap hosts-deny txt:/path/.htaccess.blacklist.ip.hosts.deny 
    RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND [OR] 
    RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND 
    RewriteRule ^- [F] 
    </IfModule> 

用含有.htaccess.blacklist.ip.hosts.deny線是這樣的:

1.161.58.238 - 
1.163.1.5 - 
1.163.192.83 -