摘要/ Quesiton:我可以在Prefork MPM下使用Apache mod_proxy作爲連接池嗎?
我有Apache與Prefork MPM運行,運行php。我試圖使用Apache mod_proxy創建一個反向代理,我可以重新路由我的請求,以便我可以使用Apache來執行連接池。例如IMPL:
在httpd.conf:
SSLProxyEngine On
ProxyPass /test_proxy/ https://destination.server.com/ min=1 keepalive=On ttl=120
但是當我跑我的測試,這是一個循環以下命令:
curl -G 'http://localhost:80/test_proxy/testpage'
它似乎並沒有重新使用連接。
經過一番進一步的閱讀,聽起來好像我沒有獲得連接池功能,因爲我使用的是Prefork MPM而不是Worker MPM。因此,每次向代理髮出請求時,都會使用自己的連接池(大小爲1)來啓動一個新進程,而不是使用維護其自己的池的單個worker。那個解釋是對的嗎?
背景信息:
有我做請求外部服務器,通過https,用於打在我運行一個網站的每一個頁面。
由於我使用php並且它似乎不支持連接池 - 如果我的網站有300個頁面請求,他們必須對外部服務器執行300次SSL握手,因此談判SSL握手的代價越來越高,因爲每個腳本完成運行後,連接會關閉。
所以我嘗試使用反向代理Apache下充當連接池,將持續整個PHP程序的連接,這樣我就不必經常做SSL握手。這給了我這個想法
來源:
- http://httpd.apache.org/docs/current/mod/mod_proxy.html
- http://geeksnotes.livejournal.com/21264.html
感謝您的回答。這幫助我瞭解了使用MPM_prefork是否可以實現連接池。 Apache文檔廣告甚至是調試級別的mod_proxy日誌記錄對於是否重新使用連接都不是很有說服力。 在我的情況下,原來不是反向代理服務器,但後端服務器是問題。它通過檢查'User-Agent'HTTP頭來檢測瀏覽器是MSIE,並因此在每個請求結束時關閉SSL連接。 這就是爲什麼反向代理從不重新使用到後端服務器的SSL連接。 – BertNase 2012-07-06 09:14:52
500是你的,因爲你的評論幫助我理解發生了什麼, 我會發佈一個答案來指出,在我的情況下,問題的解決方案是什麼。 – BertNase 2012-07-06 09:15:40