本页为有防火墙的企业用户展示如何通过部署 Nginx 和 TurnServer 中转服务器,并调用声网的接口,来使用声网 Web SDK 的服务。
- 本文内容适用于声网 Web SDK。
- 在使用 Firefox 浏览器时,跨运营商代理速度会比较慢。声网建议使用同运营商进行代理。如果必须使用跨运营商代理,则避免使用 Firefox 浏览器。
目前有部分安全要求高的企业用户通过设置防火墙,限制员工访问外网或非认可的网站。 为避免这些企业用户因防火墙无法使用声网的服务,声网 Web SDK 提供了 2 个接口,将内网请求绕过防火墙,通过代理服务器转到声网 SD-RTN 上,实现内网访问。 用户通过部署 Nginx 和 TURN 服务器,然后调用声网的接口,就可以从内网访问声网。
企业用户需要先自行部署 Nginx 和 TURN 服务器,然后再调用声网 Web SDK 的接口前,来实现 Proxy 功能。
部署前请确认你已申请 Nginx 服务器的域名和证书。
参考 Nginx 服务器安装教程完成 Centos 或 Ubuntu 系统下的 Nginx 安装。
在 Nginx 中执行如下命令行:
sudo vim /etc/nginx/nginx.conf
在 conf 文件的 http 域中添加如下配置项:
resolver 8.8.8.8;
server {
listen 80;
listen 443;
server_name <you dns>;
ssl on;
ssl_certificate <you certificate file absolute path>;
ssl_certificate_key <you certificate key file absolute path>;
location /cs/ {
proxy_pass https://$arg_h:$arg_p/$arg_d;
}
location /rs/ {
proxy_pass https://$arg_h:$arg_p/$arg_d;
}
location /ws/ {
proxy_pass https://$arg_h:$arg_p;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
执行如下命令行,即完成部署。
sudo nginx -s reload
声网提供一个开源的 TURN 服务器安装包,支持企业用户自行下载并部署。
访问网址 https://github.com/AgoraIO/Tools/tree/master/Proxy/proxy-for-webrtc 并下载 turnServer 安装包。完整的安装包内含四个文件:README
,turnserver
, turnserver.conf
和 turnserver.sh
。
打开 turnserver.sh
,并配置如下参数:
参数名称 | 描述 |
extIP |
外部 IP 地址 |
udpport |
与 UDP 端口号绑定的端口,默认值为 “3478” |
tcpport |
与 TCP 端口号绑定的端口,默认值为 “3433” |
realm |
公司名,或其他能代表公司的名字,如 “agora.io” |
在 turnserver.conf
文件中添加需要使用 TURN 服务器的用户名。格式为 username=key
。其中 key
的值可以通过如下命令行获取:
echo -n "<username>:<realm>:<password>" | md5sum
执行如下命令行,启动 TURN 服务器,完成部署。
usage: ./turnserver.sh [start/stop]
完成部署后,选择下面任意一种方法,调用接口对代理服务器进行设置:
方法一:在创建音视频流对象方法中,设置 proxyServer
和 turnServer
参数
createClient(config)
在该方法中设置 proxyServer
和 turnServer
参数:
参数 | 类型 | 描述 |
config | Object |
|
示例代码
var config = {
mode: 'live',
codec: 'vp8',
proxyServer: 'YOUR NGINX PROXY SERVER IP',
turnServer: {
turnServerURL: 'YOUR TURNSERVER URL',
username: 'YOUR USERNAME',
password: 'YOUR PASSWORD',
udpport: 'THE UDP PORT YOU WANT TO ADD',
tcpport: 'THE TCP PORT YOU WANT TO ADD',
forceturn: false
}
}
var client = AgoraRTC.createClient(config);
请确保在加入频道(
client.join
) 之前设置该参数。
方法二:调用 Web SDK 接口实现部署
部署 Nginx 服务器 (setProxyServer)
client.setProxyServer(domainName);
参数 | 类型 | 描述 |
domainName |
String | 你的 Nginx 服务器域名 |
部署 TURN 服务器 (setTurnServer)
that.setTurnServer = function (config);
参数 | 类型 | 描述 |
config |
Object | TURN 服务器配置:
|
请确保在加入频道(
client.join
)之前调用如上两个方法。
代理服务器的工作原理: