简体   繁体   English

通过Apache和Tomcat的WebSockets:AJP协议不支持HTTP升级

[英]WebSockets through Apache and Tomcat: HTTP upgrade is not supported by the AJP protocol

I am developing with WebSockets, and made a working web application running on Tomcat 8. However, when testing with Apache 2 in front of it, the client is getting an HTTP 500 and the Tomcat log says: 我正在使用WebSockets进行开发,并在Tomcat 8上运行了一个正在运行的Web应用程序。但是,当在它前面测试Apache 2时,客户端正在获取HTTP 500并且Tomcat日志说:

 java.lang.UnsupportedOperationException: HTTP upgrade is not supported by the AJP protocol
    at org.apache.coyote.ajp.AbstractAjpProcessor.action(AbstractAjpProcessor.java:587)
    at org.apache.coyote.Request.action(Request.java:379)
    at org.apache.catalina.connector.Request.upgrade(Request.java:1886)
    at org.apache.catalina.connector.RequestFacade.upgrade(RequestFacade.java:1114)
    at org.apache.tomcat.websocket.server.UpgradeUtil.doUpgrade(UpgradeUtil.java:231)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:77)

This worked when accessing Tomcat directly through its HTTP connector. 这在通过其HTTP连接器直接访问Tomcat时起作用。 If this is not supported with AJP, is there a workaround? 如果AJP不支持此功能,是否有解决方法?

Use Apache module mod_proxy_wstunnel : 使用Apache模块mod_proxy_wstunnel

sudo a2enmod mod_proxy_wstunnel

Then use it to let WebSocket connections through by adding this to apache.conf : 然后通过将其添加到apache.conf来使用它来通过WebSocket连接:

ProxyPass "/ws2/"  "ws://localhost:8180/ws"

And make sure you have enabled an HTTP connector in Tomcat by using <Connector protocol="HTTP/1.1" port="8180" ...> in server.xml . 并确保在server.xml使用<Connector protocol="HTTP/1.1" port="8180" ...>在Tomcat中启用了HTTP连接器。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM