背景:项目遇到一个问题,要加上客服语音的功能,公司购买的是声网 sdk 服务,声网 sdk 必须在 https 和 localhost 上使用,而项目很特殊,需要本地启动的 localhost ,再用 iPad 通过 IP 访问。所以必须本地启一个https 服务。
https 服务的方案
想要启用 https 服务,想到几个方案:
- webpack-dev-server:
- 通过 webpack-dev-server 可以配置 https ,
devServer: { https: true }
即可。但项目有固定的项目启动方式,devServer 仅供开发。
- 通过 webpack-dev-server 可以配置 https ,
- 适配https、wss:
- 项目启动适配 https,但这样要修改项目原本启动代码,对其他业务可能有风险,且项目所用到的 websocket 也要同时从 ws 改成 wss 协议,所以这个作为备选方案。
- nginx 反向代理:
- 另外起一个 nginx 代理服务,将 https 转发至 原本的 http,wss 也转发至 ws。看起来这种方案最好,不改变原有代码逻辑。
1. 生成自签名证书
起 https 服务需要有证书,因为是本地项目所以用自签名证书即可。openssl 来生成自签名证书。
sudo openssl req -x509 -sha256 -nodes -newkey rsa:2048 -days 365 -subj
"/C=US/ST=Oregon/L=Portland/O=Company Name/OU=Org/CN=localhost"
-keyout /etc/letsencrypt/live/site.localhost/privkey.pem
-out /etc/letsencrypt/live/site.localhost/fullchain.pem
浏览器一般会对自签名证书网站会有限制,但选择仍要访问即可。
2. nginx 配置 https 服务
待补充
- 监听端口号 记得加 ssl
3. 代理wss
(1)搭建最简单的ws服务
(2)ws测试连接工具
(3)location 正则匹配,nginx测试网站