Avanzamento del caricamento di nginx combinato con la richiesta normale


15

Ho un buon host virtuale per nginx che funziona bene senza usare il modulo di caricamento nginx. Quando aggiungo l'avanzamento del caricamento in questa mia richiesta di caricamento. Come posso risolvere questo? ho bisogno di caricare i miei file usando/?r=upload o /upload?foo=bare tenere traccia dei dati di avanzamento del caricamento utilizzando /progresso qualcos'altro.

# 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;
} 

Per l'host virtuale sopra la mia richiesta di caricamento si /upload/?X-Progress-ID=QLiFKnG5A81Kblocca. qual è il problema?

Ho bisogno di una richiesta tale da /?r=blahblahfunzionare bene anche se invio il mio file di upload in /uploaduso /?r=upload.


2
Se non sbaglio, ci sono due moduli nella configurazione: upload module e upload progress module. Le direttive del modulo di caricamento mi sembrano OK, ma penso che manchi la upload_progress <zone_name> <zone_size>direttiva sul location /uploadblocco, che ha abilitato il monitoraggio dell'avanzamento del caricamento, come indicato nella documentazione di nginx ( wiki.nginx.org/HttpUploadProgressModule#upload_progress ).
Juan Traverso,

Risposte:


1

Ho esaminato le mie configurazioni per un esempio funzionante. Uso i moduli di caricamento e carico i progressi in questo modo:

    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;
       }
  }

Guarda anche la scheda Rete Firebug. Verifica se il tuo codice ottiene un output json corretto. Forse il problema è davvero sul lato client.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.