2016-10-13 27 views
2

如何在同一時間使用ProxyPassDirectoryIndex使用帶目錄索引的httpd ProxyPass

我有以下規則:

# Index 
DirectoryIndex index.html 

# Service Endpoint 
ProxyPass /endpointA http://127.0.0.1:wxyz/ 
ProxyPassReverse /endpointA http://127.0.0.1:wxyz/ 

# Root Endpoint 
ProxyPass/http://127.0.0.1:8080/static/ 
ProxyPassReverse/http://127.0.0.1:8080/static/ 

預期的行爲是,當用戶在/打機,他們應服127.0.0.1:8080/static/index.html

我然而,我從/static/得到一個404端點,因爲它沒有默認頁面試圖加載;這一切工作正常,如果我打

/index.html 

哪些航線我127.0.0.1:8080/static/index.html

怎樣纔可以有一個的ProxyPass和DirectoryIndex的同時,或配置的一些其它組合的工作,所以,當用戶只需擊中/,他們被路由到127.0.0.1:8080/static/index.html而不僅僅是127.0.0.1:8080/static

回答

2

的問題是,將DirectoryIndex的不使用,因爲服務器已經匹配的ProxyPass /,所以它已經被傳遞到其他服務器。

您應該在您的後端服務器上設置DirectoryIndex。即8080

+0

您的答案可能會導致混淆。 DirectoryIndex正在使用,index.html是本地或遠程沒有區別。 –

+0

是否在備用服務器上使用DirectoryIndex?否則,對後臺服務器的請求將會失敗。 –

+0

就是這樣,我已經說了這個部分,我添加了一個新的答案,以表明他可以做些什麼來避免/index.html被反向代理。 –

0

我已經測試了幾種方法端口的一個,誰取得了同樣的結果,你似乎想對我來說,截至目前已經似乎使用mod_rewrite如只有一個:

RewriteEngine on 
RewriteRule ^/$ http://127.0.0.1:8080/static/index.html [P,L] 

那麼你可以添加其餘的:

RewriteRule ^/(.+) http://127.0.0.1:8080/static/$1 [P,L] 

這可能是一個粗略的方法來做到這一點。

+0

這並不回答這個問題。用戶*希望* index.html被代理。 –

+0

wops,你是完全正確的,我誤讀了,讓我解決它。 –

+0

順便說一句,我還支持@DanielScott的答案,他告訴你在後端本身使用這樣的重定向或索引引用,因爲你無論如何都在放棄/到後端。在這種情況下,我發現從前端控制它的唯一方法是mod_rewrite,或者至少在我的測試中,它是唯一優先於proxypass –