2009-05-28 69 views
3

如何在不重定向到其他服務器或IP的情況下使用mod_proxy設置反向代理?這將是一個虛擬主機環境。我想這樣做的原因是,mod_proxy處理與客戶端瀏覽器的通信,從而釋放Web服務器進程以服務下一個請求,而不是提供客戶端瀏覽器。當使用MPM Prefork的mod_php等語言模塊時,這一點尤爲重要。我試圖實現的流程如下: 1.流量在端口80上解析爲www.mydomain.com。 2.代理將請求發送到Web服務器。 3.網絡服務器將答案發送回代理並斷開與代理的連接。 4.代理提供客戶端瀏覽器。如何在不重定向的情況下使用mod_proxy設置反向代理?

一旦工作,我想添加nginx在相同的IP地址,但端口81和代理圖像請求到nginx在同一臺服務器上。我不想讓nginx處理代理,也不需要FCGI。我想要我的標準Apache mod_rewrite和.htaccess工作。

謝謝噸!

+0

我覺得proxypassreverse是你缺少的部分。 – DevelopingChris 2009-06-29 22:02:03

回答

3

只需重定向到不同端口上的localhost?您的主機端口8080上的應用程序,並使用mod_proxy將請求轉發:

ProxyPass /foo http://localhost:8080/foo 
ProxyPassReverse /foo http://localhost:8080/foo 

這可能是有益的,如果您有正在處理請求的應用服務器和您想要的多個實例結合一臺機器上。每個應用程序服務器可以使用一個端口。

我不知道它是否真的比直接使用mod_php更快。代理請求還會增加開銷。

+0

我認爲這是完美的。我沒有想到讓Apache監聽多個端口。 它是否減輕任何負載取決於mod_php進程實際上花費在瀏覽器上的時間以及保持活動的影響。如果大多數請求都適合套接字緩衝區,那麼Apache就不會進行「寶貝坐着」的通信,內核就是這樣,我不能做得比這更好。該代理還允許我嘗試nginx的靜態內容。這可能會有所幫助。 PHP緩存運行良好。經過這些調整之後,它將延續到緩存,緩存,CPU和RAM。 – user113468 2009-05-28 11:20:31

0

請確保您還使用負載這些2個模塊

LoadModule proxy_module bin/mod_proxy.so 
LoadModule proxy_http_module bin/mod_proxy_http.so 

ProxyPass /TeamCity http://localhost/TeamCity 
ProxyPassReverse /TeamCity http://localhost/TeamCity 
相關問題