Java apache2.4.6 wstunnel代理到tomcat 7错误意外200次

Java apache2.4.6 wstunnel代理到tomcat 7错误意外200次,java,tomcat,apache2,proxypass,Java,Tomcat,Apache2,Proxypass,我的WebSocket总是给我一个意外的200响应错误,所以所有的东西都是正确的。我在chrome和firefox上使用原生WebSocket 我的conf文件如下所示 <VirtualHost example.com:80> ServerName example.com ProxyRequests Off ProxyPass /websocket/ ws://localhost:8080/XXXXX/websocket/ retry=0 ProxyPassReverse /webs

我的WebSocket总是给我一个意外的200响应错误,所以所有的东西都是正确的。我在chrome和firefox上使用原生WebSocket

我的conf文件如下所示

<VirtualHost example.com:80>
ServerName example.com
ProxyRequests Off
ProxyPass /websocket/ ws://localhost:8080/XXXXX/websocket/ retry=0
ProxyPassReverse /websocket/ ws://localhost:8080/XXXXX/websocket/ retry=0
ProxyPass / http://localhost:8080/XXXXX/
ProxyPassReverse / http://localhost:8080/XXXXX/
ProxyPassReverseCookiePath /XXXXX /
</VirtualHost>

我在Ubuntu 15.04上的apache2版本2.4.10中遇到了类似的modproxy和wstunnel模块问题。我使用tcpflow来找出发生了什么,发现我的HTTP代理工作正常,并将所有内容发送到nodejs服务器,但我的websocket代理直接返回了位于/的网站

幸运的是,我有一个几乎相同配置的工作Debian服务器,我发现唯一的区别是:

在非工作服务器上:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

选项如下符号链接
不允许超限
在工作服务器上:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

选项如下符号链接
不允许超限
要求全部拒绝

我不知道为什么在我的情况下这样做有效,但我希望将Directory指令添加到VirtualHost中也能解决您的问题。

localhost将代理您从中发出请求的框。这就是我们的意图吗?@PaulFrederiksen我们的意图是让wstunnel将请求转移到tomcat7,这似乎是在做,但在某个时候apache向websocket客户端发送了一个错误的200响应。手动点击这些URL有效吗?“localhost”上的链接是相对的吗?@PaulFrederiksen我想你误解了眼前的问题。这些url可以工作,但由于某种原因,在启用mod_proxy_wstunnel后,当它匹配时,不会被视为websocket url。因此,我得到了200响应,这意味着我没有使用HTTP1.1,或者apache正在剥离头文件。我需要弄清楚如何防止这两种情况发生,这样它就可以到达tomcat并返回到客户端。mod_proxy_wstunnel并非在所有情况下都能工作,尽管如果您的所有websocket端点都在/websocket下,您应该可以。是应用程序将WebSocket和HTTP混合在一个它无法处理的URL上。我建议使用Wireshark查看httpd-Tomcat连接上到底发生了什么。