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
.
답변
작업 예제를 위해 구성을 살펴 보았습니다. 업로드 모듈을 사용하고 다음과 같은 방식으로 진행 상황을 업로드합니다.
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 출력이 있는지 확인하십시오. 아마도 문제는 실제로 클라이언트 측에 있습니다.