Nginx 如何對後端機器中的flv做流媒體
我在生產環境中使用Nginx做反向代理工作,同時啟用了Nginx的本地緩存功能。
現在的問題是後端上很多的FLV或者mp4文件需要 像流媒體一樣,提供播放服務;
據我所知,Nginx是有這些功能的,但是就是不知道這種環境下如何實現Nginx的flv-stream功能。
如果您了解的話,還請賜教;或者告知思路也可;
《解決方案》
應該直接做流媒體伺服器吧,如:red5
《解決方案》
回復 2# key1077
據我查資料顯示,Nginx對flv和MP4有相應的模塊支持。
我是想如何在出口的Nginx上直接就可以提供flv或者MP4模塊的功能,但是具體的文件在後端的機器上,或者NGINX的緩存里。
《解決方案》
一天過去了,沒人給點意見嗎?
《解決方案》
你啟用緩存還是照常啟用唄
server_name flv.a.com;
index index.html;
root /data/flv;
limit_rate_after 4m;
limit_rate 512k;
locatiom ~\.flv {
flv;
}
《解決方案》
不好意思,沒有看清楚你的需求,重新來過
upstream server_pool {
server 192.1.1.1:80
server 192.1.1.2:80
}
server
{
lister 80;
server_name a.b.com;
location /
{
proxy_set_header Host $host;
proxy_pass http://server_pool;
}
location ~ .*\.(gif|jpg)$
{
proxy_cache cache_1;
這裡是你緩存哪些東西
....
proxy_pass http://server_pool;
}
location ~ .*\.flv$
{
proxy_cache cache_2;
具體緩存設置
....
flv;
proxy_pass http://server_pool;
}
《解決方案》
回復 6# wsxedcer
測試了您的配置。
文件還是從後端伺服器上拽下來的。並沒有啟用NGINX的FLV模塊。而且本地也沒有建立相應的緩衝文件。 這樣和直接 proxy_pass http://x.x.x.x:80 是一樣的。
倒是找到一些俄文的信息,正在測試。如下:server {
listen 127.0.0.1:812;
server_name _;
root /media;
location / {
limit_conn one 1;
proxy_pass http://origin;
proxy_ignore_client_abort on;
proxy_store on;
}
}
server {
listen 1.1.1.1:80;
server_name _;
root /media;
location / {
internal;
aio on;
directio 512;
output_buffers 1 128k;
location ~* \.mp4$ {
mp4;
try_files $uri @origin;
limit_rate_after 1m;
limit_rate 200k;
}
location ~* \.flv$ {
flv;
try_files $uri @origin;
limit_rate_after 1m;
limit_rate 200k;
}
}
location /dl/ {
return 503;
location ~ ^/dl/(?P<secure_hash>[\w\-=]+,\d+)(?P<file>/.+)$ {
secure_link $secure_hash;
secure_link_md5 $secure_link_expires.$file.<passphrase>;
if ($secure_link = "") {
return 403;
}
if ($secure_link = 0) {
return 403;
}
rewrite ^ /$file last;
}
}
location @origin {
proxy_pass http://127.0.0.1:812;
proxy_ignore_client_abort on;
proxy_intercept_errors on;
error_page 503 = @stream;
}
location @stream {
proxy_pass http://origin;
proxy_buffering off;
}
}