使用websocket mod_proxy_wstunnel反向代理

时间:2013-07-15 07:52:33

标签: apache2 websocket reverse-proxy mod-proxy

我的网络套接字和我的反向代理Apache有问题,我已在最新版本2.4.5升级并加载模块mod_proxy_wstunnel

httpd.conf:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
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日志中没有跟踪。

1 个答案:

答案 0 :(得分:22)

这一行:

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和ProxyPassMatch规则。匹配胜利的第一条规则。因此,通常您应该首先从最长的URL开始对有冲突的ProxyPass规则进行排序。否则,较长URLS的后续规则将被使用URL的前导子字符串的任何早期规则隐藏。请注意,与工作人员共享存在某种关系。相比之下,只有一个ProxyPass指令可以放在Location块中,并且最具体的位置将优先。

     

出于同样的原因,排除必须在一般的ProxyPass指令之前。