apache 搭建wss服务流程解析

使用welive 搭建在线客服系统,过程中根据教程总是遇到各种的 握手错误代码,后来想了想,如果能够了解这个过程的原理,就可以完全可以避免


流程

   1.如果搭建好ssl证书,那么通过https访问域名时是走443端口的,在该域名下,前端建立websocket 是需要使用wss://访问的。但是用PHP在服务器搭建websocket只能由ws://访问.此时,就需要使用apache 的代理功能

   2.开启apache的代理,需要开启apache的几个mod_proxy_*模块,对于一般的框架项目中,可以在443端口下的虚拟主机中创建代理格式为域名/wss(或者/+任何内容),将这个新增的转发到ws://  我们php建立的websocket服务的对应端口下。

3.对于welive,需要额外注意的是,项目在443端口下,而前端请求一般是到8430端口端口,因为一个端口不能同时使用ws和wss协议,所以,就需要新增一个端口来为后台PHP的websocket 服务使用。而新增端口和8430之间,就需要一个转发的机制

4.实际操作中,apache的httpd-ssl.conf中,我们listen 8430,然后创建一个虚拟主机,然后增加ssl证书和设置,这些可以参照443端口的设置,然后增加端口转发的规则

5.测试的时候,需要测试ws:// 下php创建的websocket服务,和wss:// 下创建的8430端口的服务。前者是检查php后台逻辑,后者是检查apache 的代理配置。

6.需要注意的是

   1.apache 转发设置中,转发到php端口写法,最好写成 ws://域名+端口 形式,不要抄网上的写成0.0.0.0或者localhost或者127.0.0.1。因为如果用的是vpn 主机名是不一样的,很可能就映射不到本地的端口。

   2.如果提示  address already in use, 直接netstat -tunlp|grep ws的端口号.然后kill掉即可。

你可能感兴趣的:(apache 搭建wss服务流程解析)