kemajuan unggahan nginx dikombinasikan dengan permintaan normal

15

Saya memiliki host virtual yang bagus untuk nginx yang berfungsi dengan baik tanpa menggunakan modul unggah nginx. Ketika saya menambahkan kemajuan unggah ke dalam permintaan unggahan saya ini. Bagaimana saya bisa memecahkan masalah ini? saya perlu mengunggah file saya menggunakan /?r=uploadatau /upload?foo=bardan melacak unggah data kemajuan menggunakan /progressatau sesuatu yang lain.

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

Untuk virtual host di atas, permintaan unggahan saya untuk /upload/?X-Progress-ID=QLiFKnG5A81Kdibekukan. Apa masalahnya?

Saya perlu meminta /?r=blahblahagar berfungsi dengan baik juga jika saya mengirim file unggahan saya untuk /uploaddigunakan /?r=upload.

sweb
sumber
2
Jika saya tidak salah, Anda dua modul dalam konfigurasi Anda: modul unggah, dan unggah modul kemajuan. Arahan modul unggahan tampaknya OK bagi saya, tetapi saya pikir Anda tidak memiliki upload_progress <zone_name> <zone_size>arahan di location /uploadblok, yang memungkinkan pelacakan kemajuan unggahan, sebagaimana dinyatakan pada dokumentasi nginx ( wiki.nginx.org/HttpUploadProgressModule#upload_progress ).
Juan Traverso

Jawaban:

1

Saya melihat-lihat konfigurasi saya untuk contoh yang berfungsi. Saya menggunakan modul unggah dan mengunggah kemajuan sedemikian rupa:

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

Lihat juga tab Firebug Net. Lihat apakah kode Anda mendapatkan output json yang benar. Mungkin masalahnya ada di sisi klien.

Glueon
sumber