tiến trình tải lên nginx kết hợp với yêu cầu bình thường


15

Tôi có một máy chủ ảo tốt cho nginx hoạt động tốt mà không cần sử dụng mô-đun tải lên nginx. Khi tôi thêm tiến trình tải lên vào yêu cầu tải lên của tôi. Làm sao tôi có thể giải quyết việc này? tôi cần tải lên các tập tin của mình bằng cách sử dụng /?r=uploadhoặc /upload?foo=bartheo dõi dữ liệu tiến trình tải lên bằng cách sử dụng /progresshoặc một cái gì đó khác.

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

Đối với máy chủ ảo ở trên, yêu cầu tải lên của tôi /upload/?X-Progress-ID=QLiFKnG5A81Kbị đóng băng. vấn đề là gì

Tôi cần yêu cầu như /?r=blahblahđể hoạt động tốt nếu tôi gửi tệp tải lên của mình vào /uploadsử dụng /?r=upload.


2
Nếu tôi không nhầm, bạn là hai mô-đun trong cấu hình của mình: mô-đun tải lên và mô-đun tiến trình tải lên. Các chỉ thị mô-đun tải lên có vẻ ổn đối với tôi, nhưng tôi nghĩ rằng bạn đang thiếu upload_progress <zone_name> <zone_size>chỉ thị trên location /uploadkhối, cho phép theo dõi tiến trình tải lên, như đã nêu trên tài liệu nginx ( wiki.nginx.org/HttpUploadProTHERModule#upload_proTHER ).
Juan Traverso

Câu trả lời:


1

Tôi đã xem qua các cấu hình của tôi cho một ví dụ làm việc. Tôi sử dụng các mô-đun tải lên và tiến trình tải lên theo cách như vậy:

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

Ngoài ra, hãy nhìn vào tab Firebird Net. Hãy xem nếu mã của bạn có được một đầu ra json chính xác. Có lẽ vấn đề là ở phía khách hàng thực sự.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.