gpt4 book ai didi

apache - 代理 websocket wss ://to ws://apache

转载 作者:行者123 更新时间:2023-12-02 05:45:49 26 4
gpt4 key购买 nike

我无法使用 wss:// 连接我的 websocket。

我发现有一种方法可以使用Apache来暴露

  • wss://domain.com - 前端 (Apache)
  • ws://domain.com:9090 - 后端明文

我的配置:

ProxyPass        /websocket ws://domain.com:9090
ProxyPassReverse /websocket ws://domain.com:9090

apache 配置中的此代码将从任何以 /websocket 结尾的地址发送请求到 ws://domain.com:9090例如:ws://websocket 将是 ws://domain.com:9090

我也想为 wss:// 这样做。示例:wss://websocket 必须指向 ws://domain.com:9090

它不起作用,我在浏览器控制台中收到此错误:

failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

这里有什么错误吗?谢谢你。

最佳答案

我工作了 24 小时才找到这个,并搜索了很多论坛,但没有人写下成功的消息。这是我的服务器配置:

CentOS release 6.7 , Apache 4.2.18

这就是我最后所做的:首先我发现 module/mod_proxy_wstunnel.so 必须在 apache 配置文件中启用,但我的 apache 没有该模块,经过大量搜索后我发现该模块在 apache 2.4.5 及更高版本中可用。

https://httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.html

我下载了https://archive.apache.org/dist/httpd/httpd-2.4.18.tar.gz提取httpd-2.4.18\modules\proxy\mod_proxy_wstunnel.c并上传到我的服务器根目录然后从终端可以使用这些commonds再次编译它:

chmod 755 mod_proxy_wstunnel.c #set permission
pxs -i -a -c mod_proxy_tunnel.c #compile module

pxs 命令确实编译了模块并写入 apache 配置文件来加载它

LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

之后我将这些行添加到 apache 配置文件的末尾:

RewriteEngine on
ProxyRequests Off
ProxyPreserveHost on
ProxyPass /myws ws://mysite.com:8091
ProxyPassReverse /myws ws://mysite.com:8091

现在:它有效了!在客户端 js 中,您可以像这样设置 ws url :

var protocol = 'ws://'; 
if (window.location.protocol === 'https:') {
protocol = 'wss://';
}

var wsUri =protocol+ "mysite.com/myws";

var ws = new WebSocket(wsUri);

它将请求转发到 ws://mysite.com:8091不管页面加载的是 https 还是 http ,它都会将所有以/myws 结尾的请求定向到 ws://mysite.com:8091

关于apache - 代理 websocket wss ://to ws://apache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38838567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com