宝塔 apache 反向代理配置wss服务

  1. 已经配置好了https
  2. ws服务监听 7272端口(websocket协议,端口自定义)
  3. openssl 已安装
    启用 proxy_wstunnel_module 模块
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
  4. 打开宝塔的网站设置,打开配置文件。
    找到
#SSL
SSLEngine On

在下面添加

ProxyRequests Off
ProxyPass /wss ws://127.0.0.1:7272
ProxyPassReverse /wss ws://127.0.0.1:7272
  1. 重启apache

js连接wss

ws = new WebSocket("wss://域名/wss");
<think>好的,用户遇到了在宝塔面板中访问EMQX时出现400 BAD_REQUEST错误的问题,提示“Invalid message received”。我需要先理解这个错误的原因,然后给出解决方案。 首先,400错误通常表示客户端发送的请求有误,服务器无法处理。可能的原因包括请求头或请求体格式不正确、使用了不兼容的协议版本,或者SSL证书配置有问题。另外,反向代理设置不当也可能导致这个问题。 接下来,我需要分步骤分析可能的原因。首先检查反向代理配置宝塔面板常用的Nginx或Apache,用户可能配置反向代理,但参数设置不正确。例如,可能需要添加特定的请求头,或者调整超时时间。 然后是SSL证书的问题。如果启用了HTTPS,证书配置错误可能导致握手失败,从而引发400错误。需要确认证书是否有效,是否过期,或者是否配置了正确的证书链。 另外,EMQX的版本和兼容性也需要考虑。用户可能使用的EMQX版本与客户端工具不兼容,或者某些插件未正确启用。例如,WebSocket或MQTT over WebSocket的插件是否开启。 还有防火墙和安全组的设置,可能拦截了部分请求。需要检查宝塔面板的防火墙规则,以及服务器提供商的安全组设置,确保相关端口(如1883、8083、8084)已开放。 最后,查看EMQX的日志是定位问题的关键步骤。日志中可能会有更详细的错误信息,帮助确定具体问题所在。例如,如果日志显示协议版本不匹配,可以调整客户端的协议设置。 现在需要将这些可能的解决方案整理成步骤,帮助用户逐步排查。同时,生成的相关问题要覆盖常见原因,帮助用户进一步了解如何优化和预防类似问题。</think>### 宝塔面板 EMQX 400 BAD_REQUEST "Invalid message received" 解决方案 #### 1. 检查反向代理配置(Nginx/Apache) 若通过反向代理访问EMQX,需在宝塔面板的**网站配置**中添加以下参数: ```nginx # Nginx示例(在server段内添加) proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 86400; ``` *说明*:`Upgrade`和`Connection`头部是WebSocket协议必需字段,缺失会导致协议握手失败[^1]。 #### 2. 验证SSL证书配置 若启用HTTPS,检查证书链是否完整: - 在宝塔面板**SSL管理**中,确认证书文件包含**服务器证书+中间证书** - 使用`openssl s_client -connect 域名:443`命令验证证书链是否正常返回 #### 3. 检查EMQX服务状态 通过SSH执行以下命令: ```bash # 查看EMQX运行状态 sudo systemctl status emqx # 重启服务 sudo systemctl restart emqx # 查看监听端口(1883/8083/8084等) netstat -tunlp | grep emqx ``` *注意*:若端口未正常监听,可能是防火墙拦截或EMQX配置错误。 #### 4. 排查协议兼容性 在`/etc/emqx/emqx.conf`中检查协议配置: ```properties # 启用WebSocket支持 listener.ws.external = 0.0.0.0:8083 listener.wss.external = 0.0.0.0:8084 ``` 使用MQTTX工具测试时,需选择正确的协议版本(如MQTT 3.1.1/5.0)。 #### 5. 分析EMQX日志 通过以下命令实时查看错误日志: ```bash tail -f /var/log/emqx/emqx.log ``` 典型错误示例: ```log 2023-08-01T10:00:00.000 [error] ** INVALID FRAME ** ``` 若出现类似日志,说明客户端发送了不符合MQTT协议规范的数据包[^2]。 #### 6. 检查防火墙设置 - 宝塔面板**安全**模块开放8083/8084端口 - 服务器厂商控制台(如阿里云/腾讯云)安全组需同步放行 - 禁用系统防火墙或添加规则: ```bash sudo ufw allow 8083/tcp ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Emma'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值