LINUX.ORG.RU
ФорумAdmin

Nginx + php-fpm отдают данные по мере генерации а не после.

 


1

3

Добрый вечер. Такая проблема, не удается настроить отдачу nginx-ом страницы после полной генерации бэкендом php-fpm. В итоге некоторые страницы с длинными списками грузятся в opera-style: с дерганьем и постепенно сокращающимся ползунком прокрутки. Когда бэкендом был apache - nginx сначала ждал генерацию страницы, а потом мгновенно ее выплевывал браузеру.

Гуру, подскажите как добиться от связки nginx+php-fpm аналогичного поведения.

site.conf:

server {
    listen 80;#
    listen 443 ssl;
    server_name www.server.ru server.ru;
    root /var/www/server.ru/web;
    rewrite ^/app\.php/?(.*)$ /$1 permanent;
location @rewriteapp { rewrite ^(.*)$ /app.php/$1 last; }
location / { index app.php; try_files $uri @rewriteapp; }
location ~ ^/(app|app_dev|config|apc)\.php(/|$) {
        fastcgi_pass unix:/var/run/php5-fpm.sock;        
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;                  
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;                                
        fastcgi_ignore_client_abort     off;     
        fastcgi_param HTTPS on;
    }
location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js)$ { access_log off;  root /var/www/server.ru/web/; expires 1d;}
location ~ /\.ht {deny all;}
    ssl_certificate /etc/ssl/comodo/ssl-bundle.crt;
    ssl_certificate_key /etc/ssl/comodo/private.key;

    ssl_session_timeout 5m;
    ssl_protocols SSLv3 TLSv1;  
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;

     
    large_client_header_buffers 64 99981920;
    client_max_body_size 1000m;  

}

основная часть конфига fpm: www_conf:

[www]
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
pm = static
pm.max_children = 130
pm.start_servers = 26
pm.min_spare_servers = 4
pm.max_spare_servers = 30
pm.max_requests = 500
pm.status_path = /status
slowlog = /var/log/php5-fpm-slow.log
request_slowlog_timeout = 15s
chdir = /
security.limit_extensions = .php .php3 .php4 .php5


Ответ на: комментарий от xtraeft

Решение найдено: обновить nginx 1.5.6+ => fastcgi_buffering

/etc/php5/fpm/php.ini: output_buffering = 4096

proxy_buffering в nginx включен не был, т.к не используется ngx_http_proxy_module.

Благодаря вашей наводке по аналогии узнал о fastcgi_buffering.

Директива появилась в nginx 1.5.6, причем она там по-дефолту включена. Но у меня debian 7, там по дефолту nginx 1.2.2, который ни сном ни духом про fastcgi_buffering.

Подключил репозиторий nginx как описано тут: http://nginx.org/ru/linux_packages.html ,обновился до 1.6.1 - все стало неплохо. Поигрался с fastcgi_buffers (видимо, чтобы влезала сжатая gzip-ом страница) - стало совсем хорошо.

Большое спасибо!

c0der ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.