freeswitch http https ws wss nginx domain default port config

现代H5浏览器产业链越来越丰富,http+websocket+webrtc+sip组合已经是一种非常成熟的web原生音视频通讯解决方案

FreeSWITCH是一个开源的电话软交换平台,早在SIP年代就非常有名,自从支持WebSocket传输sip信令后与Web结合玩法多了许多

WebRTC提供了音视频通讯的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台,但就是没有信令协议部分

Chrome、Firefox等浏览器为了从保护用户隐私绝对安全角度考虑,纷纷提高了Web原生应用访问摄像头、麦克风的门槛:如不是用https、wss安全协议则会有各种警告及确认甚至直接拒绝

WS、WSS其实就是HTTP、HTTPS的WebSocket协议名称,其使用方式及默认端口都完全一致

综上所述,如果都用同一个域名地址承载web sip相关服务方便用户使用,就需要在nginx上做一些优雅的配置

其对应freeswitch相关端口配置片断如下

注:
sip和rtp端口不经nginx直连,但需要防火墙做相应的白名单
ws5066端口和wss7443端口间接通过nginx的http端口和https端口反向代理提供服务
nginx默认的http80端口和https443端口又用来提供webrtc前端相关资源访问

阿里云ecs部署freeswitch默认event socket listen port 8021 ipv6问题

阿里云ecs服务器目前还不支持ipv6
freeswitch默认event_socket模块配置
/etc/freeswitch/autoload_configs/event_socket.conf.xml

里的<param name=”listen-ip” value=”::”/>是ipv6地址的表现形式,其等同于ipv4的0.0.0.0
这就造成服务启动后,由于无法绑定ipv6地址,也就不能通过fs_cli命令行进行控制台管理了
这就解释了同样的配置在本机一切正常,部署到阿里云上就无法管理

知道原理解决起来就简单了,将listen-ip的value根据实际需要改成127.0.0.1、0.0.0.0或内外网卡的ipv4地址即可