2013-07-15 290 views
11

我有一個網絡套接字和我的反向代理Apache的問題,我在最新版本2.4.5中升級並加載模塊mod_proxy_wstunnel反向代理與websocket mod_proxy_wstunnel

httpd.conf中:

<VirtualHost *:80> 
ServerAdmin [email protected] 
ServerName www.toto.fr 
ServerAlias toto.fr 


ProxyPass /my_app http://1X.X.X.1:8080/my_app 
ProxyPassReverse /web_pmr http://1X.X.X.1:8080/my_app 
ProxyPassReverseCookiePath /my_app/
ProxyPassReverseCookieDomain localhost my_app 
ProxyRequests off 
ProxyTimeout 15 

#WEBSOCKETS 


ProxyPass /my_app/BasicWebsocketServlet ws://1X.X.X.1:8080/my_app/BasicWebsocketServlet retry=0 
ProxyPassReverse /my_app/BasicWebsocketServlet ws://1X.X.X.1:8080/web_pmr/BasicWebsocketServlet retry=0 


ErrorLog "logs/my_app_error.log" 
LogLevel debug 
CustomLog "logs/my_app_access.log" combined 
<Proxy *> 
     Order deny,allow 
     Allow from all 
</Proxy> 
</VirtualHost> 

當我在我的本地URL測試,的WebSockets正在而是用反向代理的Apache,還有在Tomcat中日誌無痕。

+0

你是什麼意思「無痕」?請求是否被轉發到Tomcat? – jimjag

回答

21

這條線:

ProxyPass /my_app/BasicWebsocketServlet ws://1X.X.X.1:8080/my_app/BasicWebsocketServlet retry=0 

需要走到這一個之前:

ProxyPass /my_app http://1X.X.X.1:8080/my_app 

解釋(從https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass):

訂購的ProxyPass指令

所配置的ProxyPass和Pro按配置順序檢查xyPassMatch規則。第一條匹配勝利的規則。所以通常你應該首先從最長的URL開始排序衝突的ProxyPass規則。否則,較長的URL的後續規則將被任何使用該URL的前導子字符串的早期規則隱藏。請注意,與員工分享有一些關係。相比之下,只有一個ProxyPass指令可以放置在位置塊中,並且最具體的位置將優先。

出於同樣的原因,排除必須出現在一般的ProxyPass指令之前。