You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache搭配Phusion Passenger部署Node.js WebSocket服务连接异常求助

Phusion Passenger + Apache + Node.js WebSocket连接异常排查

环境与正常运行的HTTP(S)配置

搭载WHM/CPanel的VPS上,通过Phusion Passenger运行Node.js应用,HTTP(S)服务正常,核心启动代码如下:

if (typeof(PhusionPassenger) !== 'undefined') {
  server = app.listen('passenger', () => {
    this.log('Express.js-server started via Passenger');
  });
} else {
  server = app.listen(process.env.HTTP_PORT, () => {
    this.log(`Express.js-server started on port ${process.env.HTTP_PORT}`);
  });
}

新增的WebSocket服务代码

为添加WebSocket功能,新增以下代码:

wss = new WebSocket.Server({ noServer: true });
// Handle the upgrade event for the WebSocket server.
server.on('upgrade', (request, socket, head) => {

  socket.on('error', (err) => {
    console.log(`WebSocket error: ${err}`);
  });

  const clientIp = request.headers['x-forwarded-for'] || request.connection.remoteAddress;
  wss.handleUpgrade(request, socket, head, (ws) => {
    ws.clientIp = clientIp;
    console.log('WebSocket upgrade complete: ' + clientIp);
    wss.emit('connection', ws, request);
  });
});

问题现象

尝试连接WebSocket服务时,服务器日志输出WebSocket upgrade complete: xx.xx.xx.xx及连接事件日志,表明HTTP(S)到WebSocket的升级请求已被服务器接受,但客户端始终无法建立有效连接(测试过多款Chrome WebSocket插件及自定义客户端)。服务器端WebSocket连接未关闭,但客户端侧始终显示未连接状态。

已尝试的Apache配置

查阅到早年(8-10年前)的资料称Phusion Passenger搭配Apache无法支持WebSocket,已尝试启用Apache代理相关配置:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

<VirtualHost *:80>
  RewriteEngine on
  RewriteCond ${HTTP:Upgrade} websocket [NC]
  RewriteCond ${HTTP:Connection} upgrade [NC]
  RewriteRule .* "wss://webos.erdesigns.dev/$1" [P,L]

  ProxyPass / wss://webos.erdesigns.dev/
  ProxyPassReverse / wss://webos.erdesigns.dev/
  ProxyRequests off
</VirtualHost>

但问题仍未解决。

求助问题

2023年Phusion Passenger搭配Apache与Node.js是否仍不支持WebSocket服务?或是我遗漏了关键配置项?恳请有相关经验的人士提供帮助。


内容的提问来源于stack exchange,提问作者eXXecutor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 08:52:42