2015-02-11 65 views
1

我一直在尝试使用nginx + rtmp模块从我的openshift盒式磁带中流式传输flv内容。Openshift + NGINX RTMP

在我的本地机器上,与连接的配置,一切都运行得很好(我用ffplay进行测试,如ffplay RTMP://本地主机:8080 /测试/ streamkey)

当我试着使用相同的配置在openshift,我得到以下错误:

HandShake: Type mismatch: client sent 3, server answered 60 f=0/0 
RTMP_Connect1, handshake failed. 

但是,如果我启用端口转发,并使用ffplay RTMP测试流服务器://127.0.0.1:8080 /测试/ streamkey,一切工作正常。这里是我的端口转发:

rhc port-forward myappname 
Checking available ports ... done 
Forwarding ports ... 

To connect to a service running on OpenShift, use the Local address 

Service Local    OpenShift 
------- -------------- ---- ----------------- 
nginx 127.0.0.1:8080 => 127.10.103.1:8080 

我的墨盒是一个“diy-0.1”墨盒。 nginx 1.7.6(也测试过1.4.4)+ rtmp-module。

我怀疑有一些代理(apache?)的问题,它使用openshift处理齿轮,也许它不允许rtmp头(?)?

注意:配置nginx http-only工作正常。

任何人都可以帮忙吗?我被卡住了,我想这是我第一次在stackoverflow上问一些问题:-)

nginx配置(注意:“play”路径和IP:PORT是使用openshift环境变量获取的。):

rtmp { 
    server { 
     listen 127.10.103.1:8080; 

     chunk_size 8192; 

     application test { 
        play /var/lib/openshift/54da37644382ece45c000139/app-root/runtime/repo/public; 
     } 
    } 
} 

回答

1

。在你的OpenShift在线应用程序前面的Apache代理,它是可能的内容正在尝试进行流为HTTP流量,而不是RTMP流,这就是为什么你所得到的内容不相符,但是如果通过端口转发来实现,则可以直接访问应用程序并绕过代理。这就是为什么它与港口前进一切正常。目前无法通过公共IP绕开apache反向代理,请参阅此开发人员门户文章以获取有关请求如何路由到您的应用程序的更多信息:https://developers.openshift.com/en/managing-port-binding-routing.html

+0

谢谢,这就是我一直在寻找的!其实我还是有希望的,幸好我有一个计划B! – 2015-02-12 09:53:55