jssip、sipML5以wss方式通过Nginx wss代理连接FreeSwitch的ws端口

chrome浏览器需要https访问才能获取话筒及摄像头权限

如果是http,需要在浏览器地址栏输入chrome://flags,选择 Insecure origins treated as secure 项添加 你们的ip:端口

https需要wss进行websocket连接。这时有两个选择

  • 一个是freeswitch 开通wss服务。
  • 另一个是freeswitch侧保持不变,依然是5066的ws服务,用Nginx代理成wss

先在nginx 的http下配置如下:

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}
upstream freeswitch{
	server 10.0.8.23:5066  weight=10 max_fails=2 fail_timeout=6s;
}

再在配置一个server

server {
     listen 443 ssl; # 监听9000端口
    server_name    xxx.xxx.xxx.xxx;
    ssl_certificate /data/nginx/server.crt;  # 局域网里面需要证书的话用mkcert,很不错。
    ssl_certificate_key /data/nginx/server.key;
    ssl_session_timeout 5m;
    ssl_session_cache shared:SSL:10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers on;
    ssl_verify_client off;
    add_header Access-Control-Allow-Origin *;
  
    location / {
        #添加wensocket代理
       proxy_pass https://freeswitch;  # websocket服务器。不用管 ws://
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_connect_timeout 1800s;  # 注意这3个设置避免前端wss 连接超60S没有通信自动端口
        proxy_send_timeout 1800s;
        proxy_read_timeout 1800s;
    }
}

还有一点就是,这边只是用nginx去代理wss,实际上送到freeswitch那边的还得是ws的标志,所以在

  • jssip.xxx.js里查找SIP/2.0 后面直接写死加上WS
via = 'SIP/2.0/' + 'WS';//transport.via_transport;
  • 如果是sipML5 则在XX\sipml5-master\src\tinySIP\src\transports\tsip_transport.js里找到以下代码
                this.s_scheme = "sips";
                this.s_protocol = "wss";
                this.s_via_protocol = "WSS";
                this.s_service = "SIPS+D2W";

修改为

                this.s_scheme = "sip";
                this.s_protocol = "ws";
                this.s_via_protocol = "WS";
                this.s_service = "SIP+D2W";

局域网生成证书可参考:使用mkcert工具生成受信任的本地SSL证书
生成证书也在使用的机器上安装。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要配置Nginx代理wss,你可以按照以下步骤进行操作: 1. 下载并安装Nginx。你可以从官方网站\[1\]下载Nginx的压缩包,并解压到你的目录中。 2. 配置Nginx。打开Nginx的配置文件,一般是nginx.conf。在配置文件中添加一个server块,监听你想要的端口(比如9000),并设置server_name为你的域名或IP地址。同时,你需要配置SSL证书和密钥,以确保安全连接。你可以参考\[3\]中的示例配置。 3. 配置代理转发。在server块中,添加一个location块,用于代理转发wss请求。设置proxy_pass为你的wss服务器地址,同时设置proxy_http_version、proxy_set_header等参数,以确保正确的代理转发。你可以参考\[2\]中的示例配置。 4. 保存并重启Nginx。保存配置文件后,使用命令重启Nginx服务,以使配置生效。 通过以上步骤,你就可以成功配置Nginx代理wss了。请确保你的wss服务器正常运行,并且Nginx能够正确地代理转发请求。 #### 引用[.reference_title] - *1* [nginx代理websocket的wss和项目的https](https://blog.csdn.net/qq_36216193/article/details/93755987)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [《Linux运维实战:Nginx方向代理wssws》](https://blog.csdn.net/m0_37814112/article/details/123737847)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值