Nginx ждет пока загрузится предыдущая страница или файл

Mihael nginx-forum на nginx.us
Чт Сен 15 22:17:42 UTC 2011


Добрый вечер!

В системном администрировании я
новичок.
Недавно решил съехать с виртуального
хостинга на собственный, установил на
домашний сервачок debian 6, nginx, apache2, php5,
mysql.
Все работает отлично, nginx отдает
статику, apache2 все остальное.
Но есть проблема: при выполнении
какого-нибудь тяжелого скрипта,
который выполняется около 20 секунд,
условно назовем его update_accounts.php, пока
этот скрипт не завершит свою работу я
не могу открыть больше никакие php со
своего сайта страницы в этом же
браузере(Chrome). Только php, статика
отдается нормально. При этом если
открыть рядом другой браузер(Opera) и
запустить update_accounts.php в Chrome, то в Oper'e
будут открываться любые php страницы не
дожидаясь пока в Chrome закончится
выполнение update_accounts.php.

Почему я считаю, что дело в nginx? Потому
что если открыть в chrome мой сайт
напрямую с апача, то есть с порта 81 и 
попробовать одновременно запустить
update_accounts.php и любые другие php страницы
эта проблема не наблюдается.

Ниже привожу конфиг nginx:

user www-data;
worker_processes  2;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  2048;
    use epoll;
    multi_accept on;
}

http {
    include       /etc/nginx/mime.types;
    access_log	/var/log/nginx/access.log;
    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay        on;
    server_tokens       off;
    client_body_buffer_size 1K;
    client_header_buffer_size 1k;
    client_max_body_size 4m;
    large_client_header_buffers 2 1k;
    client_body_timeout   10;
    client_header_timeout 10;
    keepalive_timeout     5;
    send_timeout          10;
    proxy_buffers 8 64k;
    proxy_intercept_errors on;
    proxy_connect_timeout 1s;
    proxy_read_timeout 3s;
    proxy_send_timeout 3s;
    limit_zone slimits $binary_remote_addr 5m;    
    server {
      if ($request_method !~ ^(GET|HEAD|POST)$ ) {
        return 444;
      }
      if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
       return 403;
      }
      if ($http_user_agent ~* msnbot|scrapbot) {
       return 403;
      }
      if ( $http_referer ~*
(babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen) )
      {
       return 403;
      }
    }

    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

server {
    listen   80;
    server_name ***.ru www.***.ru;
    access_log  /var/log/nginx/mainservernet-access.log;
    location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|js|swf)$ {
        root /var/www/;
    }
    location ~ /\.ht {
        deny  all;
    }
    
    location / {
        proxy_pass         http://127.0.0.1:81/;
        proxy_redirect     off;
        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       10m;
        client_body_buffer_size    128k;
        proxy_connect_timeout      300;
        proxy_send_timeout         300;
        proxy_read_timeout         300;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
    }
    location /content/ {
        root /var/www/content/;
    }
        location = /stat {
        stub_status on;
        access_log  off;
        allow 192.168.1.95;
        deny all;
    }
}

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

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



Подробная информация о списке рассылки nginx-ru