是否有可能爲我反向代理外部網站?
是的,但有明顯的缺點。
注意:當我嘗試您的配置時,我在日誌中獲得了SSL Proxy requested for [...] but not enabled [Hint: SSLProxyEngine]
,因此我添加了SSLProxyEngine on
。
主機問題
當你犯了一個HTTP/1.1請求到服務器時,會自動在請求中添加主機名。當您代理他們,你有兩個possibilites:
[browser] --(Host: authtest.com)--> [apache proxy] --(Host: authtest.com)--> Google
或
[browser] --(Host: authtest.com)--> [apache proxy] --(Host: google.com)--> Google
第一個就是你ProxyPreserveHost On
得到。谷歌服務器不會處理authtest.com
的請求,你應該刪除這一行。
即使在第二種情況下,您也可能遇到問題。 ProxyPassReverse
將處理重定向,但只針對給定的域:我在法國,google.com將我重定向到google.fr(不同的域),反向代理不重寫重定向。
另一個問題是引用者:如果服務看到來自不同網站的圖像/ css/js的請求,它可能會將其視爲帶寬泄漏並阻止它們。現在,您還需要重寫響應的HTML(mod_proxy_html將有所幫助,但它不是銀色子彈)。
路徑問題
在你的榜樣,你代理<authtest> /谷歌向谷歌< > /。像上面一樣,你需要重寫html:絕對鏈接/資源將無法工作,除非你的服務器在每個地方添加/google
。相同的鏈接/資源也是如此(但邊緣情況更多)。如果您擁有後端服務器,則可以在html/css/js文件中檢查url。在這裏,如果url是使用js在瀏覽器中動態構建的,那麼您無法執行任何操作。
如果你可以代理/
到/
(或/whatever
到/whatever
),你會避免很多問題在這裏。
謝謝你這麼多的詳細說明。在我的項目中,Iam代理使用相同的域名,即authTest,但是不同的位置,如/ google到google.com和/ fb到facebook,傳遞了幾個webistes。所以有我遇到問題的時候。 – user7044932