【问题标题】:Apache SSL Offloading/Reverse Proxy for Websockets. (Spring App)Websockets 的 Apache SSL 卸载/反向代理。 (春季应用)
【发布时间】:2017-02-16 21:00:07
【问题描述】:

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

【问题讨论】:

    标签: apache ssl proxy websocket activemq


    【解决方案1】:

    ProxyPassMatch 需要正则表达式和目标的某种处理。 ProxyPassMatch / ws://app:61614 对我来说看起来很不正确。还匹配结尾斜杠。

    尝试告诉我们:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-14
      • 2017-09-19
      • 2011-08-09
      • 2013-02-18
      相关资源
      最近更新 更多