我一直在Apache代理后面使用Gateone很长一段时间。突然之间,可能是在Debian Jessie安装的最后一次apt-get更新/升级之后,这已经不再适用了。 我在error.log中得到的错误是:
[星期六12月12日16:20:47.992400 2015] [代理:警告] [pid 1870] [客户端192.168.0.2:5022] AH01144:没有协议处理程序对URL / gateone /有效。如果您使用的是DSO版本的mod_proxy,请确保使用LoadModule将代理子模块包含在配置中。
我能找到的所有答案都指向需要加载的缺少代理(子)模块。这是我加载的代理模块列表:
proxy.conf proxy_connect.load proxy_html.conf proxy_http.load
proxy.load proxy_html.load proxy_wstunnel.load
我的http conf文件中的(未更改的)部分如下所示:
ProxyPass /gateone/ ws://localhost:8888/gateone/
ProxyPassReverse /gateone/ ws://localhost:8888/gateone/
ProxyPass /gateone/ wss://localhost:8888/gateone/
ProxyPassReverse /gateone/ wss://localhost:8888/gateone/
ProxyPass /gateone/ http://localhost:8888/gateone/
ProxyPassReverse /gateone/ http://localhost:8888/gateone/
此配置过去有效。任何人都可以告诉我最近在Debian Jessie中是否有变化,特别是关于代理(websockets代理)?
谢谢, 汉斯
答案 0 :(得分:2)
2.4.17有完全相同的问题,但2.4.12没问题。
有趣的是,这个ALSO发生在使用VC14或VC11的2.4.16和2.4.17 Windows x64版本上,因此这完全是代理模块内部的内容。
唯一的解决方案似乎是降级到2.4.12,因为没有代理模块的组合使其工作,您可以在2.4.12中使用您的配置而不会出现问题。确定的websocket代理打破2.4.16+
*更新:当您使用具有非常特定URL的ProxyPass时,解决方法允许从ws:http:回退。 例如
#Works 2.4.12 but fails 2.4.16+
ProxyPass /ws/ ws://localhost:8080/ws/
#2.4.16+ seems to want full and exact path and ws: fails but http: failover works
ProxyPass /ws/stomp/ http://localhost:8080/ws/stomp/