ความคืบหน้าการอัปโหลด nginx รวมกับคำขอปกติ


15

ฉันมีโฮสต์เสมือนที่ดีสำหรับ nginx ที่ทำงานได้ดีโดยไม่ต้องใช้โมดูลอัปโหลด nginx เมื่อฉันเพิ่มความคืบหน้าการอัพโหลดลงในคำขออัปโหลดของฉันนี้ ฉันจะแก้ปัญหานี้ได้อย่างไร ฉันต้องอัปโหลดไฟล์โดยใช้/?r=uploadหรือ/upload?foo=barและติดตามข้อมูลความคืบหน้าการอัปโหลดโดยใช้/progressหรืออย่างอื่น

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

สำหรับโฮสต์เสมือนข้างต้นคำขอการอัปโหลดของฉันจะ/upload/?X-Progress-ID=QLiFKnG5A81Kค้าง อะไรคือปัญหา?

ฉันต้องขอเช่น/?r=blahblahการทำงานเป็นอย่างดีนอกจากนี้ยังถ้าผมส่งไฟล์ที่อัปโหลดของฉันเข้าไปในการใช้/upload/?r=upload


2
หากฉันไม่เข้าใจผิดคุณเป็นสองโมดูลในการกำหนดค่าของคุณ: อัปโหลดโมดูลและอัปโหลดโมดูลความคืบหน้า คำสั่งโมดูลอัปโหลดดูเหมือนว่าตกลงสำหรับฉัน แต่ฉันคิดว่าคุณไม่มีupload_progress <zone_name> <zone_size>คำสั่งในlocation /uploadบล็อกซึ่งเปิดใช้งานการติดตามความคืบหน้าการอัปโหลดตามที่ระบุไว้ในเอกสารประกอบ nginx ( wiki.nginx.org/HttpUploadProgressModule#upload_progress )
Juan Traverso

คำตอบ:


1

ฉันดูการกำหนดค่าของฉันสำหรับตัวอย่างการทำงาน ฉันใช้โมดูลการอัปโหลดและอัปโหลดความคืบหน้าในลักษณะ:

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

ดูที่แท็บ firebug Net ด้วย ดูว่ารหัสของคุณได้รับเอาต์พุต json ที่ถูกต้องหรือไม่ บางทีปัญหาอยู่ในฝั่งไคลเอ็นต์จริงๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.