2016-10-07 25 views
1

私はJava SpringアプリケーションをTomcatサーバー上で実行しています。 SSLオフロード用にApacheサーバーを使用しています。WebSocket用Apache SSLオフロード/リバースプロキシ(Spring App)

<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へのリクエストを行います。それらをws:// app:61614に転送します。

これはhttpsとhttpと同じ方法で実行できますか?私はWSに転送されるのApacheサーバのポート61615に作る

//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 

私はすべてのWSS要求を考えるに修正アム://アプリ:私のTomcatのアプリの61614だから私はこのような何かを持っているだろうか?そして、これは動作しますか? ApacheがこのようにWebソケットのプロキシを処理することはできますか?

答えて

0

ProxyPassMatchでは正規表現とターゲットで何らかの処理が必要です。 ProxyPassMatch/ws:// app:61614は非常に間違っています。終了スラッシュにも一致します。

試してみて、私たちに知らせ:

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