Welcome! Log In Create A New Profile

Advanced

Nginx + Apache + NginxHttpUploadProgressModule - иногда проблема с Upload

June 09, 2010 04:16AM
Добрый день.
Используем nginx + apache + NginxHttpUploadProgressModule
Иногда возникает проблема с закачкой файлов.
Сегодня пример у меня чётко проявлялось в Chrome и Opera, а в Firefox 1 раз была проблема и потом стало всё нормально закачиваться.
Я включил
[code]client_body_in_file_only on;
[/code]
что бы заголовки не удалялись.

[color=green]В рабочем случае я вижу:[/color]
1. Nginx создаёт тело запроса, оно растёт до размера файла.
2. В /tmp появляется файл phpuDeoB7
3. В /tmp появляется файл 1373ea077ca3ed63959ff07725b35707.tmp
Дальше мы нажимаем Save в нашей форме и файл уходит на обработку.

[color=red]В проблемном случае[/color]
1. Nginx создаёт тело запроса, оно растёт до размера файла.
2. В /tmp появляется файл phpuDeoB7
3. В /tmp ничего не появляется
Дальше мы нажимаем Save в нашей форме и получаем ошибку, т.к. проходит валидаци на наличие файла, а его там просто нету.

В обоих слуаях один и тот же файл 350 Мб, если из проблемного браузера загрузить меньшй файл то всё ок.
[b]/.htacess[/b]
[code]
php_flag magic_quotes_gpc Off
php_flag display_errors Off
php_value max_execution_time 9999
php_flag ignore_user_abort Off
php_value upload_max_filesize 999999999
php_value post_max_size 999999999
php_value memory_limit 1024M
[/code]
[b]php.ini[/b]
[code]
max_execution_time = 9999
magic_quotes_gpc = off
safe_mode = Off
file_uploads = On
upload_tmp_dir = /tmp
upload_max_filesize = 1024M
post_max_size = 1024M
memory_limit = 1024M
session.gc_maxlifetime = 86400
allow_url_fopen = On
[/code]

[b]Nginx[/b]
[code]
upload_progress proxied 1m;
server_names_hash_bucket_size 128;
proxy_buffering off;
server_tokens off;

server {
listen 192.168.1.1:80;
server_name site.com;
access_log /var/log/www/nginx_access.log;
error_log /var/log/www/nginx_error.log;

location / {
index index.php;
proxy_pass http://127.0.0.1:8080/;
proxy_redirect http://site.com:8080/ /;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 1024m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 900;
proxy_read_timeout 900;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
charset off;
track_uploads proxied 30s;
}

location ~ \.flv$ {
flv;
root /home/www/;
}

location ~* ^.+\.(gif|jpg|png|mpg|mp3|mpeg|avi|ico|txt|css|js)$ {
root /home/www/;
}

location ^~ /admin/include/get_upload_status.php {
report_uploads proxied;
}
[/code]

Бывает что клиент отваливается якобы и мы получаем 499 ошибку, но несмотря на это файл может успешно загрузиться и попасть в /tmp
Т.е. получается что 499 ошибка не показатель успешности Upload.

Хотел бы спросить как происхдит Upload ?
Т.е. какая очерёдность ?
1. Есть форма - выполняем POST - Nginx создаёт тело запроса - собственно сам файл
2. UploadProgressModule - выполняет запрос статуса при загрузке и показывает его в форме
3. Управление передаётся php он копирует файл в /tmp

Такая ли схема Upload ?
Как понять на каком этапе происходит затык ?
Я сделал debug nginx, но лог занимает 450 Мб и я непредставляют что там искать
Subject Author Posted

Nginx + Apache + NginxHttpUploadProgressModule - иногда проблема с Upload

wmiadmin June 09, 2010 04:16AM

Re: Nginx + Apache + NginxHttpUploadProgressModule - иногда проблема с Upload

wmiadmin June 09, 2010 05:06AM

Re: Nginx + Apache + NginxHttpUploadProgressModule - иногда проблема с Upload

wmiadmin June 09, 2010 09:21AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 234
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready