2010-03-28 56 views
2

Heyas。我使用mod_proxy和apache2爲本地機器上運行的多個servlet應用程序提供虛擬主機功能。它的工作很好,大部分。請求進入apache,然後被定向到綁定在localhost端口上的應用程序。該應用程序收到請求並作出響應,由apache將其傳回客戶端。使用apache時的應用程序錯誤passthru mod_proxy

我遇到的問題是應用程序在錯誤上傳遞了500個錯誤,並且mod_proxy對它們進行了重寫。通常這些錯誤是在ajax請求中引起的,並且錯誤在客戶端JavaScript中處理。例如,對服務器端createObject(name)的調用可能會拋出一個NameNotUniqueException,該異常將作爲500返回。客戶端JavaScript可能會顯示相應的錯誤消息。

當錯誤是由應用程序(導致500響應於mod_proxy的)拋出,然後apache的踐踏錯誤消息,並返回

500內部服務器錯誤

內部服務器錯誤

服務器遇到內部錯誤或 配置錯誤,無法完成 您的請求。

..股票apache服務器端錯誤信息。

我希望mod_proxy將原始500傳遞迴客戶端。有沒有指令可以防止500的破壞?

TIA

+0

如何使用mod_proxy_ajp或mod_jk?在我看來,他們更適合將Apache連接到servlet。 – 2010-03-28 05:51:40

+0

好的建議。該應用程序是一個獨立的碼頭驅動的dyn web引擎。也許我應該看看jetty ajp連接。 – 2010-03-28 07:06:11

+0

嗯,mod_proxy似乎是首選方法(http://docs.codehaus.org/display/JETTY/Configuring+AJP13+Using+mod_jk)。因此,我很驚訝,我找不到解決這個問題的辦法。 – 2010-03-28 07:19:12

回答

2

你有

ProxyRequests Off 
ProxyErrorOverride Off 
ProxyPass /path/ http://backend.ip/path/ 
ProxyPassReverse/http://backend.domain/ 

更換backend.ip,並與你的價值觀(我使用backend.ip在這裏,因爲它可以防止阿帕奇從運行DNS查詢對每個請求)backend.domain 。

通常錯誤會按原樣報告。由於ProxyErrorOverride默認爲關閉。如果這個配置沒有發生,請檢查500是否真的來自您的後端服務器。或者只是告訴我們您的完整代理配置。

相關問題