【问题标题】:Apache Config: Websockets Proxy WSS request to WS backendApache Config:对 WS 后端的 Websockets 代理 WSS 请求
【发布时间】:2019-01-08 08:45:23
【问题描述】:

提前感谢您的帮助。

我正在尝试使用 Apache 作为使用 WSS 的 Web 浏览器和后端 WS 服务器进程之间的代理。

浏览器 Apache RabbitMQ Stomp

我在 Apache 中正确设置了 HTTPS,并通过 443 提供页面。

在 Apache 站点配置中:.../sites-enabled/site.conf

<VirtualHost *:80>
    RewriteEngine on

    RewriteCond %{SERVER_NAME} =MYSERVER.com [OR]
    RewriteCond %{SERVER_NAME} =www.MYSERVER.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>


<VirtualHost *:443>
    SSLEngine On
    SSLProxyEngine On

    SSLCertificateFile      /etc/letsencrypt/live/MYSERVER.com/fullchain.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/MYSERVER.com/privkey.pem

    Redirect /wss /wss/
    ProxyPass /wss/ ws://127.0.0.1:15674/stomp/websocket/
    ProxyPassReverse /ws/ wss://127.0.0.1:15674/stomp/websocket/

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ServerName MYSERVER.com
    ServerAlias www.MYSERVER.com

</VirtualHost>

浏览器中的Javascript:

<script>
  var ws = new WebSocket('wss://MYSERVER.com:443/wss');
  var client = Stomp.over(ws);

在 Chrome 调试器中,我看到: WebSocket 连接到“wss://MYSERVER.com/wss”失败:WebSocket 握手期间出错:意外响应代码:302

使用直接指向后端的 ws 效果很好,但我需要让 wss 正常工作。

我试图获得与此示例类似的解决方案,但无法: Apache: Proxy websocket wss to ws

【问题讨论】:

    标签: apache websocket rabbitmq stomp


    【解决方案1】:

    Redirect /wss /wss/ 这一行在/wss 不存在时添加一个尾部斜杠(默认情况下,它是一个 302 重定向)。您正在尝试连接到 wss://MYSERVER.com:443/wss,这解释了重定向。

    解决方案: 尝试连接到wss://MYSERVER.com:443/wss/(带有斜杠)。现在应该可以按预期工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 2018-02-04
      • 2022-12-14
      • 2017-08-24
      • 2020-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多