我刚刚在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