Velocidade de download do acelerador Nginx com base no tamanho do arquivo

1

Estou usando nginx/1.11.11 compilado da origem com o módulo mp4 e estou exibindo arquivos de vídeo de 300 MB até 8 GB.

Estou pensando em implementar um sistema de aceleração similar ao Google Drive. Se o tamanho do arquivo for grande, aumente o limit_rate e, se o tamanho do arquivo for pequeno, defina um limit_rate menor. O problema é que não consigo encontrar uma maneira de obter o tamanho do arquivo exibido.

Meu arquivo default.conf é assim:

server {
    listen       80;
    server_name  _; # change this for your server
    root /var/www;
    index index.php;
    client_max_body_size 5G;
    proxy_read_timeout 60000000;

    # handle requests to the API
    location ~ /api/v2/(.+)$ {
        if (!-e $request_filename) { rewrite ^/api/v2/(.*) /api/v2/index.php?_page_url=$1 last; }
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param MOD_X_ACCEL_REDIRECT_ENABLED on;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
        if (!-e $request_filename) { rewrite ^/(.*) /index.php?_page_url=$1 last; }
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_read_timeout 180000000;
        fastcgi_param MOD_X_ACCEL_REDIRECT_ENABLED on;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    location / {
        if (!-e $request_filename) {
                rewrite ^/(.*) /index.php?_page_url=$1 last;
        }
    }
    location /files/ {
        root /var/www;
        aio threads;
        internal;
        mp4;
        limit_rate_after 5m;
        limit_rate 400k;
    }

    # these locations would be hidden by .htaccess normally
    location /core/logs/ {
        deny all;
    }
    
por Allkin 23.03.2017 / 10:26

1 resposta

0

The problem is I can't find a way to get the size of the served file.

Você pode tentar usar o script LUA para encontrar o tamanho do arquivo.

Dê uma olhada no projeto openresty .

Documentos: link

Existe um módulo openresty relacionado para configurar o nginx via lua: link

Você pode tentar implementar um módulo semelhante para o seu caso.

    
por 19.01.2018 / 13:02