@alex_devPY

Как стриммить MP4 с reverse proxy?

Приветствую.

Пытаюсь поднять небольшой видеохостинг. Исходные данные такие:

1. Backend server. Ubuntu 16 Сервер хостит приложение + контент.

Django + UWSGI +

NGINX

user www-data;
worker_processes auto;
pid    /etc/nginx/logs/nginx.pid;

events {
    worker_connections 1024;
    multi_accept on;
       }

http {
  upstream django {
    server 127.0.0.1:8000; 
                  }
  server {
    listen 80;
    server_name XXX.XXX.XXX.191;
    charset     utf-8;
    gzip            on;
    gzip_static     on;
    gzip_comp_level 5;
    gzip_min_length 1024;    
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
    add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
    if_modified_since off;   
    add_header Accept-Ranges bytes;


     location /static/ {
         root  /home/tube;
                       }

    #location ~ \.mp4$ {
    #    sendfile           on;
    #    tcp_nopush         on;
    #    sendfile_max_chunk 1m;
    #mp4;
    #mp4_buffer_size     2m;
    #mp4_max_buffer_size 10m;
    #                       }

    location / {
        uwsgi_pass  django;
        include     uwsgi_params;
               }

}
}


2. Frontend server. NGINX как reverse proxy.

user  www-data;
worker_processes  auto;
pid    /etc/nginx/logs/nginx.pid;
events {worker_connections  1024;}
http {
    include       mime.types;
    default_type  application/octet-stream;
    server {
         listen       80;
         server_name  XXX.XXX.XXX.92;
         proxy_http_version 1.1;
         proxy_pass_request_headers      on;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header X-Forwarded-Proto $scheme;
         #proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Range $http_range;
         proxy_set_header If-Range $http_if_range;
         proxy_no_cache $http_range $http_if_range;
         location / {
                proxy_pass  http://XXX.XXX.XXX.191/;
                    }
        }
    }


Возникла проблема в видео. Это набор роликов mp4.

Когда я в браузере загружаю страницу с видеороликом, то страница загружается и подгружается в фоне кусок видео в 2мб. И все. По клику на play идет загрузка видео по частям. (206) - backend сервер работает более не менее корректно.

Когда я в браузере загружаю ту же самую страницу с роликом через frontend server, html грузится корректно, но видео продолжает подгружаться в фоне до полного размера (~150мб). Ответ 200. По клику, видео начинает проигрываться как бы заново. Опять идет загрузка с ответом 200.

Как избежать предварительной фоновой загрузки видео? Сделать как на бэкенде?

Пробовал активировать секцию location ~ \.mp4$ {

но в этом случае ссылки на ролики отдают ответ 404.
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
почему ракеты не летают как птицы?
это смотрели?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
D2C.io Екатеринбург
от 45 000 руб.
Social Systems Москва
от 80 000 до 160 000 руб.
ИП Ласилкин СИ Коломна
от 70 000 до 100 000 руб.
18 авг. 2018, в 17:54
6000 руб./за проект
18 авг. 2018, в 16:00
60000 руб./за проект