我有一个提供未加密 websocket 的 mqtt 代理。我想通过一个 Apache 代理它,它应该将 websocket 加密到外部。
它是 Windows 机器上的 Apache 2.4。
我的配置是:
<VirtualHost *:80>
ServerName test.someurl.com
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://localhost:9876/$1 [P,L]
</VirtualHost>
<VirtualHost *:443>
ServerName test.someurl.com
SSLEngine on
SSLCertificateFile "C:/Program Files (x86)/Apache24/conf/ssl/some_certificate.crt"
SSLCertificateKeyFile "C:/Program Files (x86)/Apache24/conf/ssl/some_key.key"
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://localhost:9876/$1 [P,L]
# Websocket proxy
# wss redirects to working ws protocol
# ProxyPass /wss ws://127.0.0.1:9876 retry=0 keepalive=On
# ProxyPassReverse /wss ws://127.0.0.1:9876 retry=0
</VirtualHost>
我能够通过 ws / 端口 80 连接。它工作正常。但是,我无法使用 wss 进行连接。
我尝试使用重写和 proxy_pass 指令。我尝试了 100 种不同的解决方案。然而,这个看起来最有希望,因为端口 80 对 ws 有效,但对加密部分无效。任何想法?或者我只是被选项蒙蔽了O:)