Apache SSL Offloading/Reverse Proxy for Websockets.(Spring App)

im9ewurl  于 2023-10-19  发布在  Apache
关注(0)|答案(1)|浏览(106)

我有一个运行在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吗?

8hhllhi2

8hhllhi21#

ProxyPassMatch需要regex和目标上的某种处理。ProxyPassMatch / ws://app:61614看起来很不正确。也匹配结束斜线。
试着让我们知道:

ProxyPass / ws://app:61614/
ProxyPassReverse / ws://app:61614/

相关问题