progreso de carga nginx combinado con solicitud normal

15

Tengo un buen host virtual para nginx que funciona bien sin usar el módulo de carga nginx. Cuando agrego el progreso de carga en este mi solicitud de carga. ¿Como puedo resolver esto? Necesito cargar mis archivos usando /?r=uploado /upload?foo=bary rastrear los datos de progreso de carga usando /progresso algo más.

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

Para el host virtual anterior, mi solicitud de carga se /upload/?X-Progress-ID=QLiFKnG5A81Kcongela. ¿Cuál es el problema?

Necesito una solicitud /?r=blahblahpara que funcione bien también si envío mi archivo de carga para /uploadusar /?r=upload.

barrido
fuente
2
Si no me equivoco, son dos módulos en su configuración: módulo de carga y módulo de progreso de carga. Las directivas del módulo de carga me parecen bien, pero creo que le falta la upload_progress <zone_name> <zone_size>directiva en el location /uploadbloque, que permitió el seguimiento del progreso de carga, como se indica en la documentación de nginx ( wiki.nginx.org/HttpUploadProgressModule#upload_progress ).
Juan Traverso

Respuestas:

1

Miré a través de mis configuraciones para ver un ejemplo de trabajo. Uso módulos de carga y progreso de carga de tal manera:

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

También mire la pestaña Firebug Net. Mire si su código obtiene una salida json correcta. Tal vez el problema está realmente en el lado del cliente.

Glueon
fuente