用于Websockets的Apache SSL卸载/反向代理。 (Spring App)

时间:2016-10-07 19:17:50

标签: apache ssl proxy websocket activemq

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

1 个答案:

答案 0 :(得分:0)

ProxyPassMatch需要正则表达式并在目标处进行某种处理。 ProxyPassMatch / ws:// app:61614看起来对我不正确。也匹配结束斜杠。

尝试告诉我们:

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