Bee*_*ice 7 ssl mod-proxy apache-2.4 websocket
我依赖的 websocket 库 ( PHP-Websockets ) 尚不支持安全套接字 ( wss)。不过我的网站已经结束https,所以我不能使用不安全的ws连接。
我正在尝试使用Apachemod_proxy将来自浏览器的安全请求转发到客户端。
Javascript
var ws = new Websocket('wss://example.com/_ws_/');
Run Code Online (Sandbox Code Playgroud)
Apache 虚拟主机
ProxyPass "/_ws_/" "ws://127.0.0.1:8080/"
ProxyPassReverse "/_ws_/" "ws://127.0.0.1:8080/"
# I've also tried "/_ws_/" "ws://example.com:8080/" Same error below
Run Code Online (Sandbox Code Playgroud)
尝试连接时,浏览器会收到一个500 Server Error. 日志显示:
没有协议处理程序对 URL /_ws_/ 有效。如果您使用的是 mod_proxy 的 DSO 版本,请确保使用 LoadModule 将代理子模块包含在配置中。
我已经确认,如果我删除代理规则,停止将用户重定向到https并尝试从浏览器连接到不安全的套接字:new Websocket('ws://example.com/'),一切正常。
我加载的 Apache 模块包括mod_ssl.c,mod_proxy.c和mod_proxy_http.c
Apache 2.4
为了让事情工作,我还需要加载 mod_proxy_wstunnel
一旦我这样做了,这个规则集就开始工作了:(在VirtualHost接收和代理 websocket 请求的域中)
<IfModule mod_proxy.c>
ProxyPass "/_ws_/" "ws://127.0.0.1:8080/"
ProxyPassReverse "/_ws_/" "ws://127.0.0.1:8080/"
</IfModule>
Run Code Online (Sandbox Code Playgroud)
然后浏览器可以通过 HTTPS 端口联系后端 WS 服务器:
var ws = new Websocket('wss://example.com/_ws_/');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12779 次 |
| 最近记录: |