在apache中使用HTTP而不是AJP

时间:2018-01-07 07:45:16

标签: apache tomcat websocket ajp

我刚刚在Spring应用程序中添加了WebSocket支持。我遇到apache服务器配置问题。在WebSocket支持之前,我使用了AJP,一切正常:

ProxyPass / ajp://192.168.110.60:8009/
ProxyPassReverse / ajp://192.168.110.60:8009/

在tomcat的server.xml

<Connector port="8009" protocol="AJP/1.3" 
           redirectPort="443" maxThreads="2000" URIEncoding="UTF-8" />

现在为WebSocket:

由于WebSocket不支持AJP,我使用了HTTP

RequestHeader set X-Forwarded-Proto "https"

ProxyPass /app/ws ws://192.168.110.60:6332/app/ws
ProxyPassReverse /app/ws ws://192.168.110.60:6332/app/ws

ProxyPass / http://192.168.110.60:6332/
ProxyPassReverse / http://192.168.110.60:6332/

RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteCond %{HTTP:CONNECTION} ^keep-alive,\ Upgrade$ [NC]
RewriteRule .* ws://192.168.110.60:6332%{REQUEST_URI} [P]

在tomcat的server.xml

<Connector port="6332" protocol="HTTP/1.1" 
           connectionTimeout="30000" redirectPort="443" 
           URIEncoding="UTF-8" maxThreads="2000"/>

使用此配置WebSocket工作正常,但其他请求:

  • 异步请求:有时工作(!),但有时会抛出ERR_TOO_MANY_REDIRECTS错误。
  • 同步请求:有时会工作(!),但由于Failed to execute 'send' error on 'XMLHttpRequest'错误,有时会抛出ERR_TOO_MANY_REDIRECTS

注意:

  • 同步/异步请求在没有apache(仅限tomcat)的情况下正常工作。
  • 同步/异步请求可通过AJP正常工作。

我错过了在HTTP中通过apache请求的配置吗?

更新1:

我发现HOST未正确设置apache标头,有时使用domain:443但有时domain(没有端口)!! < / p>

更新2:

通过删除这些行,除了WebSocket之外,所有请求都可以正常工作:

ProxyPass /app/ws ws://192.168.110.60:6332/app/ws
ProxyPassReverse /app/ws ws://192.168.110.60:6332/app/ws

0 个答案:

没有答案