教程

您所在的位置:网站首页 代理虚拟机设置IP 教程

教程

2023-04-26 10:14| 来源: 网络整理| 查看: 265

你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

如何强制跨自己的服务器代理呼叫流量 项目 04/24/2023

在某些情况下,将所有客户端流量都代理到可以控制的服务器可能会很有用。 初始化 SDK 时,可以提供要路由流量的服务器的详细信息。 启用后,所有媒体流量(音频/视频/屏幕共享)都通过提供的 TURN 服务器而不是 Azure 通信服务默认值传输。 本教程介绍如何将 WebJS SDK 通话流量代理到你控制的服务器。

重要

代理功能从通话 SDK 的公共预览版 1.13.0-beta.4 开始提供。 请确保在尝试使用此功能时使用此 SDK 或更新的 SDK。 本快速入门使用高于 1.13.0 的 Azure 通信服务通话 SDK 版本。

重要

本文档中所述的功能目前提供公共预览版。 此预览版在提供时没有附带服务级别协议,我们不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。

代理呼叫媒体流量 什么是 TURN 服务器?

很多时候,在两个 Peer 节点之间建立网络连接并不简单。 直接连接可能由于许多原因而不起作用:具有严格规则的防火墙、位于专用网络后面的 Peer 节点,或者计算机在 NAT 环境中运行。 若要解决这些网络连接问题,可以使用 TURN 服务器。 该术语代表 Traversal Using Relays around NAT(围绕 NAT 使用中继进行遍历),它是用于中继网络流量 STUN 的协议,TURN 服务器是此处的中继服务器。 详细了解 ACS 如何利用 STUN 和 TURN 缓解网络挑战。

向 SDK 提供 TURN 服务器详细信息

若要提供 TURN 服务器的详细信息,需要传递在初始化 CallClient 时要用作 CallClientOptions 的一部分的 TURN 服务器的详细信息。 有关如何设置呼叫的详细信息,请参阅 Azure 通信服务 Web SDK,获取有关如何设置语音和视频的快速入门。

import { CallClient } from '@azure/communication-calling'; const myTurn1 = { urls: [ 'turn:turn.azure.com:3478?transport=udp', 'turn:turn1.azure.com:3478?transport=udp', ], username: 'turnserver1username', credential: 'turnserver1credentialorpass' }; const myTurn2 = { urls: [ 'turn:20.202.255.255:3478', 'turn:20.202.255.255:3478?transport=tcp', ], username: 'turnserver2username', credential: 'turnserver2credentialorpass' }; // While you are creating an instance of the CallClient (the entry point of the SDK): const callClient = new CallClient({ networkConfiguration: { turn: { iceServers: [ myTurn1, myTurn2 ] } } }); // ...continue normally with your SDK setup and usage.

重要

请注意,如果在初始化 CallClient 时提供了 TURN 服务器详细信息,则所有媒体流量都将专门流经这些 TURN 服务器。 在尝试在 Peer 节点之间建立连接时,不会考虑在创建呼叫时通常生成的任何其他 ICE 候选项,即仅考虑“中继”候选项。 若要详细了解不同类型的 Ice 候选项,可在此处找到。

注意

如果“?transport”查询参数不是 TURN URL 的一部分,或者不具有以下值之一:“udp”、“tcp”、“tls”,则默认行为将是 UDP。

注意

如果提供的任何 URL 无效或没有其中一个架构(“turn:”、“turn:”、“stun:”),则 CallClient 初始化将失败,并相应地引发错误。 如果遇到问题,引发的错误消息应有助于进行故障排除。

可以在此处找到 CallClientOptions 对象的 API 引用及其中的 networkConfiguration 属性 - CallClientOptions。

在 Azure 中设置 TURN 服务器

可以使用本指南在 Azure 门户中创建 Linux 虚拟机,并使用 coturn(适用于 VoIP 和 WebRTC 的 TURN 和 STUN 服务器的免费开放源代码实现)部署 TURN 服务器。

设置 TURN 服务器后,可以使用 WebRTC 滴送 ICE 页面 - 滴送 ICE 对其进行测试。

代理信号流量

若要提供代理服务器的 URL,需要在初始化 CallClientOptions 时将其作为 CallClient 的一部分传入。 有关如何设置呼叫的更多详细信息,请参阅 Azure 通信服务 Web SDK,获取有关如何设置语音和视频的快速入门。

import { CallClient } from '@azure/communication-calling'; // While you are creating an instance of the CallClient (the entry point of the SDK): const callClient = new CallClient({ networkConfiguration: { proxy: { url: 'https://myproxyserver.com' } } }); // ...continue normally with your SDK setup and usage.

注意

如果提供的代理 URL 无效,则 CallClient 初始化将失败,并相应地引发错误。 如果遇到问题,引发的错误消息将有助于进行故障排除。

可以在此处找到 CallClientOptions 对象的 API 引用及其中的 networkConfiguration 属性 - CallClientOptions。

在 express js 中设置信号代理中间件

还可以在 express js 服务器设置中创建代理中间件,以使用 http-proxy-middleware npm 包重定向所有 URL。 该包中的 createProxyMiddleware 函数应涵盖简单重定向代理设置所需的功能。 以下是它的一个示例用法和一些选项设置,SDK 需要这些选项设置才能使所有 URL 按预期工作:

const proxyRouter = (req) => { // Your router function if you don't intend to setup a direct target // An example: if (!req.originalUrl && !req.url) { return ''; } const incomingUrl = req.originalUrl || req.url; if (incomingUrl.includes('/proxy')) { return 'https://microsoft.com/forwarder/'; } return incomingUrl; } const myProxyMiddleware = createProxyMiddleware({ target: 'https://microsoft.com', // This will be ignore if a router function is provided, but createProxyMiddleware still requires this to be passed in (see it's official docs on the npm page for the most recent changes) router: proxyRouter, changeOrigin: true, secure: false, // If you have proper SSL setup, set this accordingly followRedirects: true, ignorePath: true, ws: true, logLevel: 'debug' }); // And finally pass in your proxy middleware to your express app depending on your URL/host setup app.use('/proxy', myProxyMiddleware);

提示

如果遇到 SSL 问题,请检查 cors 包。

在 Azure 上设置信号代理服务器

可以使用本指南(快速入门:在 Azure 门户中创建 Linux 虚拟机)在 Azure 门户中创建 Linux 虚拟机并在其中部署 NGINX 服务器。

下面是可用于快速启动的 NGINX 配置:

events { multi_accept on; worker_connections 65535; } http { map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen ssl; ssl_certificate ; ssl_certificate_key ; location ~* ^/(.*\.(com)(?::[\d]+)?)/(.*)$ { resolver 8.8.8.8; set $ups_host $1; set $r_uri $3; rewrite ^/.*$ /$r_uri break; proxy_set_header Host $ups_host; proxy_ssl_server_name on; proxy_ssl_protocols TLSv1.2; proxy_ssl_ciphers DEFAULT; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass_header Authorization; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Proxy ""; proxy_pass https://$ups_host; proxy_redirect https://$ups_host https://$host/$ups_host; proxy_intercept_errors on; error_page 301 302 307 = @process_redirect; error_page 400 405 = @process_error_response; if ($request_method = 'OPTIONS') { add_header Access-Control-Allow-Origin * always; } } location @handle_redirect { set $saved_redirect_location '$upstream_http_location'; resolver 8.8.8.8; proxy_pass $saved_redirect_location; add_header X-DBUG-MSG "301" always; } location @handle_error_response { add_header Access-Control-Allow-Origin * always; } } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3