TRTC web端内网环境怎么设置代理?

2021-09-07 17:12:36 浏览数 (2)

TRTC web端内网环境怎么设置代理?

可采用Nginx coturn 代理方案

方案名

适用场景

网络要求

方案一

允许客户端访问特定的外网代理服务器

允许客户端访问外网的proxy s erver

方案二

允许客户端通过内网代理服务器访问外网

允许 proxy server 访问外网

方案一示意图

image.pngimage.png

方案二示意图

image.pngimage.png

说明:

1.两种方案使用相同的 trtc.js 设置代理方法;

2.两种方案服务器的部署方式有差别,参考部署方案(方案 1、方案 2);

3.示意图 Nginx 服务器用于信令代理(websocket);

4.示意图 TURN 服务器用于音视频数据代理(RTCPeerconnection)。

trtc.js 设置代理的接口

通过 Client 中的方法设置代理服务器地址(示例):

代码语言:txt复制
client.setProxyServer('wss://proxy.example.com:443'); 
client.setTurnServer({ url: '192.168.0.110:3478', username: 'bob', credential: 'bobspassword', credentialType: 'password' }); 

接口参数及说明可参见文档。

setProxyServer(url)

  • 设置代理服务器
  • 该方法适用于企业自己部署代理服务器,如 ngnix coturn 方案。 Note: 该方法需要在 join() 之前调用。

Name

Type

Description

url

string

websocket 代理服务器地址,格式如:‘wss://proxy.example.com:443’

setTurnServer(config)

  • 设置 TURN 服务器
  • 该方法配合 setProxyServer() 使用,适用于企业自己部署代理服务器和 TURN 中转。 Note: 该方法需要在 join() 之前调用。

Name

Type

Description

config

object

TURN 服务器配置项

config 属性说明:

Name

Type

Attrbutes

Description

url

string

TURN 服务器地址

username

string

<optiona>

TURN 服务器验证用户名

credential

string

<optiona>

TURN 服务器验证密码

credentialType

string

<optional>

TURN 服务器验证密码类型,默认是 ‘password’ credentialType 参考

实际示例:

代码语言:txt复制
const client = TRTC.createClient({ 
mode: 'videoCall', 
sdkAppId, 
userId, 
userSig 
}); 
 
client.setProxyServer('wss://proxy.example.com:443'); 
client.setTurnServer({ url: '192.168.0.110:3478', username: 'bob', 
credential: 'bobspassword', credentialType: 'password' }); 

client 
 .join({ roomId }) 
 .catch(error => { 
console.error('进房失败 '   error); 
}) 
.then(() => { 
console.log('进房成功'); 
 }); 

说明:

1.在受限网络场景下,trtc.js 通过 Nginx 代理服务器与 TRTC 云端建立连接进行信令

交互;

2.在受限网络场景下,trtc.js 通过 TURN 服务器对音视频数据进行中转,与 TRTC 云

端进行音视频数据交互;

3.TURN 服务器的均衡,可以通过设置一组 TURN 服务器的地址,trtc.js 会在内部进

行随机选择,避免同一台服务器压力过大。

代理服务器部署方案

TRTC 提供开源代理服务器安装脚本,企业用户按下面方法部署代理服务器。具体步骤如

下:

方案一

1.部署 Nginx 服务器

参考 Nginx 服务器安装教程 在 CentOS 或 Ubuntu 系统中安装 Nginx,如果企业已有部

署 Nginx 服务,可以不用部署直接进行配置。

2.配置 Nginx 服务器
代码语言:txt复制
vi /etc/nginx/nginx.conf 
server { 
#对应参数 signalProxy 中的域名 proxy.trtcapi.com 
server_name proxy.trtcapi.com; 
#对应参数 signalProxy 中的端口 443 
listen 443; 

ssl on; 

location /ws/ { #对应参数 signalProxy 中的"ws" 
proxy_pass https://qcloud.rtc.qq.com:8687/; # TRTC 的服务器 
proxy_http_version 1.1; 
proxy_set_header Upgrade $http_upgrade; 
proxy_set_header Connection "upgrade"; 
} 

#域名对应的 SSL 证书,HTTPS 用,用户自行申请 
ssl_certificate ./crt/1_proxy.trtcapi.com_bundle.crt; 
ssl_certificate_key ./crt/2_proxy.trtcapi.com.key; 
} 
3.执行重新加载 Nginx
代码语言:txt复制
sudo nginx -s reload
4.部署 TURN 服务器

建议在 CentOS 或 Ubuntu 上安装部署 coturn。

5.TURN 服务器配置( /etc/turnserver.conf )
代码语言:txt复制
vi /etc/turnserver.conf 
//#指定中转服务器监听端口 
listening-port=3478 

//#本机的 ip 
listening-ip=172.27.0.13 

//#在外网的 ip 地址 
external-ip=148.70.115.45 

//#可以分配给客户端连接使用最小端口和最大端口 
min-port=59900 
max-port=60000 
 
//#面向内网客户端的用户名和密码 
user=myname:12345678 

//#服务名称 
server-name=tencent_webrtc 
realm=tencent_webrtc 

//#证书生成参考下面说明 
cert=../etc/turnserver/turn_server_cert.pem 
pkey=../etc/turnserver/turn_server_pkey.pem 

//#处理数据中转的线程个数 
relay-threads=10 

simple-log 
fingerprint 
lt-cred-mech 
no-loopback-peers 
no-multicast-peers 
no-tcp 
no-tls 
no-cli 
no-tlsv1 
no-tlsv1_1 
mobility
6.启动 TURN 服务
代码语言:txt复制
turnserver -c /etc/turnserver.conf
7.服务器端口开启

打开 turn 服务器的 3478 和( min-port ~ max-port )之间端口

8.公司防火墙设置

确认公司防火墙对部署的 nginx 和 TURN 服务器 IP 限制访问解除。

方案二

1.部署 Nginx 服务器(同方案一)
2.配置 Nginx 服务器(同方案一)
3.执行重新加载 nginx(同方案一)
4.部署 TURN 服务器(同方案一)
5.TURN 服务器配置( /etc/turnserver.conf )

和方案一区别:在 external-ip 上填服务器在内网的地址。

代码语言:txt复制
//#指定中转服务器监听端口 
listening-port=3478 

//#本机的 ip 
listening-ip=172.27.0.13 
 
//#服务器在内网的 ip 
external-ip=148.70.115.45 

//#可以分配给客户端连接使用最小端口和最大端口 
min-port=59000 
max-port=60000 

//#面向内网客户端的用户名和密码 
user=myname:12345678 

//#服务名称 
server-name=tencent_webrtc19. realm=tencent_webrtc 

//#证书生成参考说明 
cert=../etc/turnserver/turn_server_cert.pem 
pkey=../etc/turnserver/turn_server_pkey.pem 

//#处理数据中转的线程个数 
relay-threads=10 

simple-log 
fingerprint 
lt-cred-mech 
no-loopback-peers 
no-multicast-peers 
no-tcp 
no-tls 
no-cli 
no-tlsv1 
no-tlsv1_1 
mobility
6.启动服务(turnserver.conf)
代码语言:txt复制
turnserver -c /etc/turnserver.conf
7.turn 服务器端口开启

打开 turn 服务器的 3478 和(min-port - max-port)之间端口。

8.公司防火墙设置

确认内网部署的 Nginx 和 TURN 服务器,可以访问外网。

确认内网部署的 Nginx 和 TURN 服务器,可以访问外网。

0 人点赞