Apache ProxyPass WebSocket 转发

使用 https 相对的也应该使用 wss ,使用 apache 将 ws 转为 wss ,在 apache 中建立一个新的配置,内容如下:

端口、域名、证书根据自己的情况修改。

Listen 20443  // 自定义端口需要打开侦听
<VirtualHost *:20443>
    ServerName mysite.com
    ServerAlias www.mysite.com

    SSLEngine On
    SSLProxyEngine On
    ProxyRequests Off

    SSLCertificateFile /etc/apache2/ssl/mysite.com.crt
    SSLCertificateKeyFile /etc/apache2/ssl/mysite.com.key
    SSLCertificateChainFile /etc/apache2/ssl/ca.cer

    ProxyPass / http://localhost:3999/  // 如果来源是 WebSocket 应该改为 ws://
    ProxyPassReverse / http://localhost:3999/  // 同上

    RewriteEngine on
    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
    RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
    RewriteRule .* ws://localhost:3999%{REQUEST_URI} [P]
</VirtualHost>