带有代理的 WSS 使用端口 443 浏览器客户端连接到端口 6001 上的 websocket 服务器
Posted
技术标签:
【中文标题】带有代理的 WSS 使用端口 443 浏览器客户端连接到端口 6001 上的 websocket 服务器【英文标题】:WSS with proxy using port 443 browser client connect to websocket server on port 6001 【发布时间】:2021-10-18 11:08:11 【问题描述】:我在浏览器客户端使用“laravel websocket if beyondcode”在端口 6001 上为 WebSocket 服务。但是当我将浏览器客户端请求从使用端口 80/443 更改时,它没有连接到 WebSocket 服务器。
浏览器客户端请求网址:
wss://test.example.com:443/app/ABCDEFG?protocol=7&client=js&version=7.0.3&flash=false
标签中添加的代码
SSLProxyEngine on
ProxyPreserveHost On
ProxyPass /app wss://test.example.com:6001/$1
ProxyPassReverse /app wss://test.example.com:6001/$1
ProxyRequests off
谁能帮我解决这个问题?
【问题讨论】:
【参考方案1】:这是在我的 centos 中工作的最终工作代码。
在
<IfModule mod_proxy.c>
ProxyRequests Off
SSLProxyEngine On
# Ensure WebSocket protocol is forwarded correctly
RewriteEngine on
RewriteCond %HTTP:UPGRADE ^Websocket$ [NC]
RewriteCond %HTTP:CONNECTION Upgrade$ [NC]
RewriteRule /app/(.*) wss://%HTTP:HOST:6001/app/$1 [P]
</IfModule>
下面是我的推杆设置
window.pusher = new Pusher(process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
encrypted: false,
wsHost: window.location.hostname,
// commented this because it should be use default port 80/443
//wsPort: process.env.MIX_LARAVEL_WEBSOCKETS_PORT,
//wssPort:process.env.MIX_LARAVEL_WEBSOCKETS_PORT,
enabledTransports: ['ws', 'wss'],
forceTLS: true,
);
【讨论】:
以上是关于带有代理的 WSS 使用端口 443 浏览器客户端连接到端口 6001 上的 websocket 服务器的主要内容,如果未能解决你的问题,请参考以下文章