Странные вещи происходят с nginx/0.6.29 при включенном gzip сжатии.
subscribe at divog.com.ru
subscribe at divog.com.ru
Sun Oct 26 16:05:01 MSK 2008
Приветствую.
Стоит nginx 0.6.29. Раздает статику и проксирует остальное на apache.
Все работает отлично, пока не включаю сжатие средствами nginx.
Когда сжатие включено, то на клиенте наблюдаю следующую картину: в ответ на
запрос приходит 8 файлов (сжаты, все ок), затем от сервера молчание в
течении примерно полутора минут, затем приходят остальные файлы (сжаты, все
ок).
Игрался с одновременной отдачей одного и того же контента апачем и nginx-ом,
включал выключал сжатие в nginx/apache и т.п.
Вывод один: если включаю сжатие в nginx, приходит ровно 8 файлов
(html|js|css) нормально, после чего следует затык примерно на полторы
минуты. Если страница содержит менее 8 text/plain файлов, то загружается
соотв. нормально.
Апач все отдает в любом (сжатом/несжатом) виде нормально, ngxin без сжатия,
тоже отдает все нормально.
Со стороны сервера логи и т.п. пока не смотрел т.к. пока что смутно понимаю,
что и где посмотреть можно в такой ситуации.
Решил спросить у сообщества, может это какой legacy баг, или вообще не баг?
Мониторил top, думал может там, что висит эти 1.5 минуты, но нет - тишь да
благодать.
Попутно буду рад подсказкам где и что можно посмотреть на сервере, дабы
понять корни проблемы.
P.S.
Sendfile, tcp_nopush, tcp_nodelay отключать пробовал.
./nginx -V
nginx version: nginx/0.6.29
built by gcc 4.1.2 20070626 (Red Hat 4.1.2-14)
configure arguments: --with-http_stub_status_module
--with-pcre=/tmp/pcre-4.4
Конфиг:
pid /usr/local/nginx/logs/nginx.pid;
error_log /usr/local/nginx/logs/error_log warn;
events {
worker_connections 1024;
}
http {
error_page 500 502 503 504 =503 /error/50x.html;
error_page 404 /error/404.html;
error_page 403 /error/403.html;
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
log_format download '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_range" "$sent_http_content_range"';
client_max_body_size 10m;
gzip off;
gzip_disable "MSIE [1-6]\.";
gzip_min_length 1100;
gzip_types text/plain;
#gzip_proxied off;
gzip_proxied any;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
limit_zone download $binary_remote_addr 10m;
server {
listen 213.1xx.xxx.xxx;
server_name name.ru;
access_log /usr/local/nginx/logs/access_log main;
location / {
proxy_pass http://127.0.0.1:9101/index.php/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_connect_timeout 10;
proxy_next_upstream error off;
}
location ~ /\.svn {
deny all;
}
location ~ ^/(images|static|error)/ {
root /var/web/server/public/;
}
location /download {
root /var/web/server/public/;
expires 1h;
add_header Cache-Control private;
limit_conn download 1;
internal;
}
location /nginx-status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
}
Заранее спасибо.
More information about the nginx-ru
mailing list