Skip to content

钉钉里面集成的应用如何访问内网的视频流

1. 使用内网穿透服务【次选】

通过内网穿透服务(如 Ngrok、Frp、钉钉开放平台提供的 微应用隧道)将内网视频流服务暴露到公网:

  • Ngrok/Frp:设置一个隧道,将内网服务映射到公网地址,然后将公网地址提供给钉钉应用使用。
  • 钉钉微应用隧道:钉钉开放平台为企业提供了内网穿透服务,可以通过配置直接访问内网资源。

步骤:

  1. 部署并配置内网穿透服务。
  2. 获取映射后的公网地址。
  3. 在钉钉应用中配置视频流的访问链接。

优点:

  • 快速、灵活。
  • 无需复杂的网络配置。

缺点:

  • 依赖第三方服务,可能存在带宽和稳定性问题。
  • 数据传输需要关注安全性(建议加密流量)。

2. 配置企业内网 VPN 【pass】

将钉钉应用服务器与企业内网通过 VPN 连接:

  1. 在企业内网部署 VPN 服务。
  2. 将钉钉应用服务器配置为企业 VPN 的客户端。
  3. 钉钉应用服务器通过 VPN 直接访问内网视频流。

优点:

  • 高安全性。
  • 数据传输效率高。 缺点:
  • 配置复杂,依赖企业 IT 基础设施。

3. 使用钉钉企业内部署版【pass】

钉钉提供企业专属部署方案,支持应用直接访问内网资源:

  • 使用钉钉的专属定制服务或内网API网关,将应用部署在内网,直接访问内网服务。

优点:

  • 钉钉官方支持。
  • 无需公网暴露,安全性高。 缺点:
  • 需要联系钉钉官方支持,可能涉及额外费用。

4. 通过反向代理 【首选】

如果你的内网视频流服务和钉钉应用都运行在局域网内,可以使用反向代理将视频流服务统一到一个子域名或路径下:

  1. 在内网服务器上部署 Nginx 或 Apache。
  2. 配置反向代理,将钉钉应用的请求路由到内网视频流服务。

优点:

  • 简单易用,适合内网部署环境。 缺点:
  • 仅适用于内网场景。

步骤

  1. 确保 Nginx 编译时启用了 http_proxy 模块(大多数版本默认已启用)。

  2. 修改 Nginx 配置文件(通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/default。)

添加以下配置:

conf
server {
    listen 80; # 外网访问的端口
    server_name your-domain.com; # 你的域名或外网 IP

    location /ws/ {
        proxy_pass http://172.27.240.40:8092/; # 转发到内网 WebSocket 服务
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;

        # 设置超时时间
        proxy_read_timeout 300s;
        proxy_send_timeout 300s;
    }
}

配置说明:

  • proxy_pass:将外网请求转发到内网 WebSocket 服务。
  • proxy_set_header Upgrade $http_upgrade 和 Connection "upgrade":支持 WebSocket 协议的升级请求。
  • proxy_read_timeout 和 proxy_send_timeout:避免长连接超时。
  1. 测试 Nginx 配置
  • sudo nginx -t 如果没有错误,重启 Nginx:
  • sudo systemctl restart nginx
  1. 外网访问测试:配置完成后,外网用户可以通过配置的域名地址访问 WebSocket 服务

Released under the MIT License.