通过Plesk在仅HTTPS的apache / nginx服务器上进行安全的websocket连接?

时间:2019-03-18 02:05:06

标签: apache ssl nginx websocket plesk-onyx

花了一天的大部分时间试图找到解决方案,但空手而归。

如果我在HTTP上启动我的网站,则ws连接可以正常工作:

this.conn = new WebSocket('ws://example.com:8080');
this.conn.onopen = () => {};

但是,一旦我切换到HTTPS(已安装证书且未进行自签名),Websocket连接就会失败,因为现代浏览器不允许在通过HTTPS服务的网站上进行不安全的Websocket连接。

所以我将JS连接更改为:

this.conn = new WebSocket('wss://example.com:8080');
this.conn.onopen = () => {};

现在,wss连接挂起(挂起)了一段时间,最后浏览器返回了:

WebSocket connection to 'wss://example.com:8080/' failed: WebSocket opening handshake timed out

我知道为什么会这样,因为我没有设置8080端口来处理wss,但这是我迷路的地方。

我正在服务器上运行 Plesk Onyx 17.8.11 ,并且我已经完成了以下工作(在阅读了有关该主题的内容后,我已经找到了):

通过工具和设置> Apache Web服务器> Apache模块

启用proxy_wstunnel

在网站和域> Apache和nginx设置> HTTP的附加指令和HTTPS的附加指令中添加了以下几行:

ProxyPass / ws://example.com:8080
ProxyPassReverse / ws://example.com:8080

但这完全破坏了Apache(500错误)。

将其更改为:

ProxyPass /ws ws://example.com:8080
ProxyPassReverse /ws ws://example.com:8080

然后将JS调用更改为:

this.conn = new WebSocket('wss://example.com:8080/ws');

导致与以前相同的握手错误。

有人知道如何使用Plesk设置安全的Websocket吗?我找到了很多文章和帖子,它们直接讨论修改apache配置文件,但是Plesk根本不喜欢这样做,所以我真正追求的是使用Plesk的解决方案。他们似乎忽略了Plesk用户在其自己的论坛上提出的其他请求,提出了相同的问题,这就是为什么我要问SO专家;)

0 个答案:

没有答案