我有一个在Tomcat服务器上运行的Java Spring应用程序。我使用Apache服务器进行SSL卸载。
<VirtualHost *:8043>
ServerName myserver.com
SSLEngine on
SSLCertificateFile "pathtokeystore.crt"
SSLCertificateKeyFile "pathtoserver.key"
ProxyRequests On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPassMatch ^/(MyApp/.*)$ http://App:8080/$1
ProxyPassReverse /MyApp http://App:8080/Home
//not including other stuff below
这样可行,我可以在端口8043上向apache服务器发出https请求,并将请求作为http请求转发到tomcat服务器。如果我的理解是错误的,请纠正我,但我相信它是如何工作的。
我的应用有一个Websocket端点。 (我使用Spring / Stomp / ActiveMQ)。目前,端点URL是:ws:// appname:61614。 我可以直接连接到websocket端点,但这是不安全的,我想将其更改为wss:// appname:61614并通过apache服务器发出请求wss:// myapp:61614,它将处理SSL然后将它们转发给ws:// app:61614。
是否有可能以与https和http相同的方式实现这一目标?我也可以这样:
//Loadmodule mod_proxy_wstunnel at the start of httpd conf file
<VirtualHost *:61615>
ServerName myserver.com
SSLEngine on
SSLCertificateFile "pathtokeystore.crt"
SSLCertificateKeyFile "pathtoserver.key"
ProxyPassMatch / ws://app:61614
ProxyPassReverse / ws://app:61614
我认为我对apache服务器的端口61615所做的所有wss请求都会被转发到我的tomcat应用程序的ws:// app:61614吗?这会有用吗? Apache能否以这种方式处理代理的websockets?
答案 0 :(得分:0)
ProxyPassMatch需要正则表达式并在目标处进行某种处理。 ProxyPassMatch / ws:// app:61614看起来对我不正确。也匹配结束斜杠。
尝试告诉我们:
ProxyPass / ws://app:61614/
ProxyPassReverse / ws://app:61614/