首页 > 解决方案 > Apache 模块 mod_proxy_wstunnel 不工作

问题描述

我有一个运行在http://XXX.XXX.XXX.XXX:3000的网站,它运行 [Botpress][1] 为了让它通过 HTTPS 运行,我做了一个 Apache 反向代理配置: 我的文件如下所示:

SSLProxyEngine on
ProxyPass "/"  "http://XXX.XXX.XXX.XXX:3000/"
ProxyPassReverse "/"  "http://XXX.XXX.XXX.XXX:3000/"
ProxyPass "/socket.io/" "ws://XXX.XXX.XXX.XXX:3000/socket.io/"
ProxyPassReverse "/socket.io/" "ws://XXX.XXX.XXX.XXX:3000/socket.io/"

现在,如果我转到https://botpress.mywebsite.com,我会看到 Botstrap 管理界面正常工作,但是当我登录时,我在浏览器的控制台中看到一个错误,显示:

Firefox 无法在 wss://botpress.mywebsite.com/socket.io/?visitorId=_GUWkjNu-VH9XpE3DpO76PxD&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....&transport=websocket 建立与服务器的连接。web.100.....94b.js:2:6616130 在页面加载时被中断。

我的 ProxyPass 和 ProxyPassReverse for socket.io 的配置文件有问题吗?

谢谢。[1]:https ://botpress.com/

标签: apachereverse-proxybotpress

解决方案


我花了几天时间。我发现问题实际上是在 conf 文件中添加内容的顺序。

‘RewriteEngine On’
‘RewriteCond %{QUERY_STRING} transport=polling [OR]’
‘RewriteCond %{REQUEST_URI} /socket.io/socket.io.js’
‘RewriteRule /socket.io/(.*)$ http://localhost:3000/socket.io/$1 [P]’
‘ProxyPass /socket.io/ ws://localhost:3000/socket.io/‘
‘ProxyPassReverse /socket.io/ ws://localhost:8082/socket.io/‘
‘ProxyPass / http://localhost:3000/‘
‘ProxyPassReverse / http://localhost:3000’
‘ProxyPreserveHost on’ 

推荐阅读