ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


  • To: nginx-ru@xxxxxxxxx
  • Subject: Nginx + Apache + NginxHttpUploadProgressModule - иногда проблема с Upload
  • From: "wmiadmin" <nginx-forum@xxxxxxxx>
  • Date: Wed, 09 Jun 2010 04:16:27 -0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mickey.jlkhosting.com; s=x; h=Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To:Date; bh=SjV3cyCXuk44wYSLPfJdfT/oIe0mDtfDrQLIdhFQ3eg=; b=ba5xMKS6rhkhGH7Mg0W7nleKxE2aC9cs4RhzHVEr8vr/os+V+w584ZU5P3l/6mkMvqJkWNQd6iNH2ipWM/h3nbQsqo10EIcfsBE8tW1XrLXKWsTAz68tL/OfwEIwjccX;

Добрый день.
Используем 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 Мб и я непредставляют что там искать

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,96213,96213#msg-96213


_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.