具有Apache代理和SSL的Websocket(Ratchet / zeroMQ)-在Plesk服务器上

时间:2019-06-19 13:02:17

标签: apache ssl websocket zeromq ratchet

我正在尝试使Websocket / push服务器与SSL一起运行,但无法使其正常工作。 以下是一些有关我正在使用的内容以及到目前为止已完成的操作的信息:

  • 带有Plesk 17.8.11的Ubuntu 16.04.6LTS‬服务器
  • Apache版本2.4.18
  • 安装了Ratchet和zmq扩展程序
  • 用于websocket连接的autobahn.js
  • Apache提供的PHP-FPM(7.2.19)
  • 已禁用防火墙进行测试
  • 已启用Apache mod:代理,proxy_balacer,proxy_fcgi,proxy_http,proxy_wstunnel

当我通过autobahn.js与ws://my.domain.net:8888/使用非SSL连接时,一切工作都很好。 尝试使用wss://my.domain.net/wss/时,浏览器就会出现504个连接超时。

我的push-server.php的一部分:

$context = new React\ZMQ\Context($loop);
$pull = $context->getSocket(ZMQ::SOCKET_PULL);
$pull->bind('tcp://0.0.0.0:5555'); // set to 0.0.0.0 for testing, was 127.0.0.1 before but didn't work either
$pull->on('message', array($pusher, 'onMessage'));

$webSock = new React\Socket\Server('0.0.0.0:8888', $loop);
$webServer = new Ratchet\Server\IoServer(
    new Ratchet\Http\HttpServer(
        new Ratchet\WebSocket\WsServer(
            new Ratchet\Wamp\WampServer(
                $pusher
            )
        )
    ),
    $webSock
);

$loop->run();

服务器正在两个端口上监听:

php        3957               root   17u     IPv4          823972456      0t0       TCP *:8888 (LISTEN)
ZMQbg/0    3957  3958         root   17u     IPv4          823972456      0t0       TCP *:8888 (LISTEN)
ZMQbg/1    3957  3959         root   17u     IPv4          823972456      0t0       TCP *:8888 (LISTEN)


php        3957                  root   16u     IPv4          823972455      0t0       TCP *:5555 (LISTEN)
ZMQbg/0    3957  3958            root   16u     IPv4          823972455      0t0       TCP *:5555 (LISTEN)
ZMQbg/1    3957  3959            root   16u     IPv4          823972455      0t0       TCP *:5555 (LISTEN)

我的Apache配置:

SSLProxyEngine on
ProxyRequests Off
SetEnv proxy-initial-not-pooled 1
ProxyPass /wss/ https://my.domain.net:8888/
ProxyPassReverse /wss/ https://my.domain.net:8888/

我也尝试使用

ProxyPass /wss/ wss://my.domain.net:8888/

但是随后我收到以下错误消息

[proxy:warn] AH01144: No protocol handler was valid for the URL /wss/. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

现在,当我尝试打开与autobahn.js到wss://my.domain.net/wss/的连接时,请求将加载一段时间并以504网关超时结束,并且出现以下错误消息:

[proxy_http:error] (103)Software caused connection abort: [client x.x.x.x:33362] AH01102: error reading status line from remote server my.domain.net:8888
[proxy:error] [client x.x.x.x:33362] AH00898: Error reading from remote server returned by /wss/

部分请求标头:

Cache-Control: no-cache
Connection: Upgrade
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Sec-WebSocket-Key: WG/ajAsTaVhBgEeEz5wiUg==
Sec-WebSocket-Protocol: wamp
Sec-WebSocket-Version: 13
Upgrade: websocket

部分响应标题:

Connection: keep-alive
Content-Length: 578
Content-Type: text/html
Server: nginx

在浏览器中打开https://my.domain.net/wss/也会导致网关超时,由nginx提供服务。

我已经花了大约2天的时间进行谷歌搜索和尝试不同的解决方案,但似乎没有任何效果。 如果您需要更多信息,请告诉我。 提前谢谢!

0 个答案:

没有答案