progression du téléchargement nginx combinée à une demande normale

15

J'ai un bon hôte virtuel pour nginx qui fonctionne bien sans utiliser le module de téléchargement nginx. Lorsque j'ajoute la progression du téléchargement dans ma demande de téléchargement. Comment puis-je résoudre ça? J'ai besoin de télécharger mes fichiers à l'aide de /?r=uploadou /upload?foo=baret de suivre les données de progression du téléchargement à l'aide de /progressou autre chose.

# static9-localhost.sweb
server {

        # upload limit
        # upload_limit_rate 10240;

        # request size limitation
        client_max_body_size 500m;
        client_body_buffer_size 64k;

        # document root
        root /path/to/webapp/static/public/;

        # index file
        index index.php;

        # server name
        server_name static9-localhost.sweb;

        # rewrite rules
        rewrite "^/thumbnail/([A-Za-z0-9]{12})/(.*)/.*$" /index.php?r=thb&unique=$1&prm=$2 last;

        # /
        location @frontcontroller {
                # expires
                expires max;

                # disable etag
                if_modified_since off;
                add_header 'Last-Modified' '';

                # mvc rewrite
                try_files $uri $uri/ /index.php?$uri&$args;
        }

        # upload progress
        location /upload {
                upload_pass @frontcontroller;
                track_uploads proxied 600s;
        }

        # progress
        location = /progress {
                report_uploads proxied;
        }

        # error pages
        error_page 404 /index.php?r=404;
        error_page 403 /index.php?r=403;
        error_page 500 501 502 503 504 /index.php?r=500;

        # php5-fpm
        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9003;
                fastcgi_index index.php;
                fastcgi_read_timeout 300;
                include fastcgi_params;
        }

        # logs
        access_log /path/to/webapp/logs/static_access.log;
        error_log /path/to/webapp/logs/static_error.log;
} 

Pour l'hôte virtuel ci-dessus, ma demande de téléchargement est /upload/?X-Progress-ID=QLiFKnG5A81Kbloquée. quel est le problème?

J'ai besoin d'une demande telle que /?r=blahblahpour bien fonctionner aussi si j'envoie mon fichier de téléchargement en /uploadutilisant /?r=upload.

sweb
la source
2
Si je ne me trompe pas, vous êtes deux modules dans votre configuration: module de téléchargement et module de progression de téléchargement. Les directives du module de téléchargement me semblent OK, mais je pense que vous manquez la upload_progress <zone_name> <zone_size>directive sur le location /uploadbloc, qui a permis le suivi de la progression du téléchargement, comme indiqué dans la documentation nginx ( wiki.nginx.org/HttpUploadProgressModule#upload_progress ).
Juan Traverso,

Réponses:

1

J'ai regardé à travers mes configurations pour un exemple de travail. J'utilise des modules de téléchargement et je télécharge la progression de cette manière:

    upload_progress proxied 4m;
    ...
    server {
        ...

        location ^~ /progress {
                report_uploads proxied;
        }

        location ^~ /services/ {
               rewrite ^/(.*?)/?$ /$1.php break;
               fastcgi_pass unix:/var/run/php5-fpm.sock;
               include fastcgi_params;
        }

        location ^~ /upd/ {
               upload_pass   /services/upload/;
               upload_pass_args on;
               upload_store_access group:rw;
               upload_store /tmp;

               set $upload_field_name file;
               upload_set_form_field $upload_field_name.name "$upload_file_name";
               upload_set_form_field $upload_field_name.path "$upload_tmp_path";
               upload_aggregate_form_field "$upload_field_name.size" "$upload_file_size";
               upload_cleanup 400 404 499 500-505;
               track_uploads proxied 30s;
       }
  }

Regardez également l'onglet Firebug Net. Vérifiez si votre code obtient une sortie json correcte. Peut-être que le problème est vraiment du côté client.

Glueon
la source