Mam dobrego wirtualnego hosta dla nginx, który działa dobrze bez użycia modułu przesyłania nginx.
Gdy dodam postęp przesyłania do tego żądania przesyłania. Jak mogę to rozwiązać? muszę przesłać moje pliki za pomocą /?r=upload
lub /upload?foo=bar
i śledzić dane postępu przesyłania za pomocą /progress
lub czegoś innego.
# 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;
}
W przypadku powyższego wirtualnego hosta moje żądanie przesyłania /upload/?X-Progress-ID=QLiFKnG5A81K
zawiesza się. Jaki jest problem?
Muszę poprosić takie jak /?r=blahblah
do pracy, dobrze też, jeśli mogę wysłać moje przesłany plik w /upload
użyciu /?r=upload
.
upload_progress <zone_name> <zone_size>
dyrektywy dotyczącejlocation /upload
bloku, która umożliwiała śledzenie postępu wysyłania, jak podano w dokumentacji nginx ( wiki.nginx.org/HttpUploadProgressModule#upload_progress ).Odpowiedzi:
Przejrzałem moje konfiguracje w celu znalezienia działającego przykładu. Korzystam z modułów wysyłania i przesyłam postępy w taki sposób:
Zobacz także zakładkę Firebug Net. Sprawdź, czy Twój kod otrzymuje poprawne wyjście Json. Być może problem leży po stronie klienta.
źródło