首页 > 解决方案 > 在防火墙后运行的 Ant Media Server 的代理设置

问题描述

我在现场服务器硬件上的 KVM VM 服务器上运行 Ant Media Server 社区版(目前正在测试),并希望为我们的小 NPO 向防火墙内外的人员提供内部网的员工操作指南视频。我们使用许多不同的 web、聊天、wiki、代码库等服务器和功能来执行此操作,使用 nginx 代理服务器管理每个服务器的 Lets Encrypt 证书,并为现场或家中的人提供访问权限。我们在路由器上正确设置了端口转发,一切运行良好。

当我以这种方式代理 Ant Media Server 时,它可以很好地访问管理 gui——它直接出现在端口 443 上,从端口 5080 代理。但是流不能通过代理工作——无论是在防火墙内部还是外部 - --在媒体和代理服务器中打开所有端口。它显示带有 VOD 链接的“流将在直播时自动开始播放”消息的网页,然后停止 - 不启动播放器或流式视频。通过端口 5080 直接访问时,VOD 视频可以正常播放。

我意识到,也许您已经采取措施确保人们不能做我想做的事——这绕过了不包括 SSL 功能的社区版许可功能。如果是这样,请告诉我。

我知道有一项功能允许通过 Lets Encrypt 直接在 Ant Media Server 上使用 SSL。但是我不能将公共端口 80 转发到 Ant 媒体服务器以允许 Lets Encrypt 证书更新——端口 80 被转发到我上面提到的专用代理/证书机器,这对我们来说做得很好。

否则,如果这应该可行并且任何人都可以查看我的设置并告诉我出了什么问题,这是我的 proxy_pass 设置:

---------------proxy_pass directive--------------------
server {
    listen 443 ssl http2;
    server_name  antmedia.my.org;
    add_header 'Access-Control-Allow-Origin' '*';
    location / {
        proxy_pass http://192.168.254.194:5080;
        proxy_redirect http://192.168.254.194:5080 https://antmedia.my.org;
    }
}

非常感谢!!我认为 Ant Media 让 Wowza 为他们的钱奔波真是太酷了!!

nginx.conf 设置是此 docker 的库存/默认设置——针对反向代理角色进行了优化。在这里,它们仅列出了活动行:

    user abc;
    worker_processes 4;
    pid /run/nginx.pid;
    include /etc/nginx/modules/*.conf;
    
    events {
            worker_connections 768;
    }
    

    http {
            sendfile on;
            tcp_nopush on;
            tcp_nodelay on;
            keepalive_timeout 65;
            types_hash_max_size 2048;
            variables_hash_max_size 2048;
            large_client_header_buffers 4 16k;
            client_max_body_size 0;
            include /etc/nginx/mime.types;
            default_type application/octet-stream;
            access_log /config/log/nginx/access.log;
            error_log /config/log/nginx/error.log;
            gzip on;
            gzip_disable "msie6";
            proxy_connect_timeout       600;
            proxy_send_timeout          600;
            proxy_read_timeout          600;
            send_timeout                600;
            include /etc/nginx/conf.d/*.conf;
            include /config/nginx/site-confs/*;
            lua_load_resty_core off;
    }

标签: ssl-certificatelets-encryptnginx-reverse-proxyant-media-server

解决方案


你可以试试如下吗?

server {
        listen 443 ssl;
        ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
        server_name yourdomain.com;

        location / {
            proxy_pass http://192.168.254.194:5080;
            proxy_http_version 1.1;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
        }
    }

推荐阅读