【问题标题】:WSS with proxy using port 443 browser client connect to websocket server on port 6001带有代理的 WSS 使用端口 443 浏览器客户端连接到端口 6001 上的 websocket 服务器
【发布时间】: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
谁能帮我解决这个问题?
【问题讨论】:
标签:
php
websocket
laravel-8
【解决方案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,
});