2009-02-24 26 views
1

用戶在我的Apache 2的配置我有一個VirtualHost這看起來是這樣的:的Apache2 - 授權使用基本驗證對一個位置的用戶,但僅適用於外部本地子網

<VirtualHost *:80> 
    ServerName sub.domain.com 

    # username:password sent on to endpoint 
    RequestHeader set Authorization "Basic dXNlcm5hbWU6cGFzc3dvcmQ==" 

    ProxyPass  /xyz http://192.168.1.253:8080/endpoint 
    ProxyPassReverse /xyz http://192.168.1.253:8080/endpoint 

    <Location /xyz> 
    # This needs to let users through under the following circumstances 
    # * They are in 192.168.1.0/24 
    # * They have a valid user in a htpasswd file 

    # So what goes here? 
    </Location> 
</VirtualHost> 

我現在用的是虛擬主機作爲反向代理到網絡上的另一臺服務器(我將稱之爲端點)。

我想弄清楚一個配置,允許網絡內的用戶瀏覽到sub.domain.com自動服務端點。但是,網絡外的用戶應該被提示輸入憑據

端點需要一個我使用RequestHeader(我想要)隱藏的密碼。外部用戶的密碼應該是不同的,並且需要是BasicAuth,從htpasswd文件中獲取用戶列表。

+0

好吧,我現在看到你想要的。 :)大衛的答案是100%正確的,他打我(它在編輯回覆時遇到了無線網絡問題)。 – vladr 2009-02-24 01:06:32

回答

6
<Location /xyz> 
    # This needs to let users through under the following circumstances 
    # * They are in 192.168.1.0/24 
    # * They have a valid user in a htpasswd file 

右出的http://httpd.apache.org/docs/2.2/mod/core.html#satisfy

Require valid-user 
    Order allow,deny 
    Allow from 192.168.1 
    Satisfy any 

當然,你還需要包括你的AuthUserFile或任何指令

AuthType basic 
    AuthName "yadayadayada" 
    AuthUserFile /foo/bar/blah/.htpasswd 
</Location> 
+0

嗯...只是一個隨機的想法,它是否改變任何東西,如果你在Require指令前移動Allow指令? – 2009-02-24 02:57:47

+0

啊該死的我在看到你之前刪除了我的評論。我通過觀看日誌得到它的工作。它似乎沒有考慮我們來自本地子網的請求,而是來自我們的公共靜態IP。我白色列出這個以及現在它似乎是完美的工作!非常感謝 – 2009-02-24 03:03:34

+0

而且我在同一步驟中也要求先移除Allow,否則它可能也是這樣。 – 2009-02-24 03:05:11

0

您可以創建兩個虛擬主機,一個是在聽外部接口和一個本地。身份驗證設置將位於前者中。

0

我認爲David已經很好地覆蓋了Apache2配置,但使用分離DNS爲您的內部和外部用戶提供不同的服務也很常見。內部用戶確實沒有理由向您的代理髮出請求,因爲他們(表面上)可以直接訪問「端點」。

如果您的內部用戶連接到您的一個公共IP地址,有些情況下您可能實際發生路由延遲和擁塞。最初,我是爲兩臺DNS服務器分開安裝硬件的粉絲,但最近轉而使用綁定「視圖」爲我的兩個用戶類提供不同的區域。

相關問題