ПРОЕКТЫ 


  АРХИВ 


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]

Проблемы с кешированием


  • To: nginx-ru <nginx-ru@xxxxxxxxx>
  • Subject: Проблемы с кешированием
  • From: Алферов Василий <vasilii.alferov@xxxxxxxxx>
  • Date: Fri, 2 Apr 2010 16:19:09 +0545
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:received:message-id :subject:from:to:content-type:content-transfer-encoding; bh=4HEorocP4e00Y0+22MTr8haVTh7qwY2CgcBWd9g+Efs=; b=NdfNXtEV8B+ThnTTkvUYB7qFdhLpz/g+bQRJl99WWhV+dw9viICDvusDMCTwq1U6n+ dPPY1So7F1kGvL5HJWKvaIqZcv/rYV5uEEJIOUUThgy8vXgk7Ffpw2oYiy8XvJRfFePN J7Of1fxPqZmAxZ9q614n25l4GpWJVYCsMn5uk=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; b=OH6Gi34LOJhA9uK5P3nRgsMtcs9yzkrzSYbrCpEU2dDhqu1W9wnTuDVt2YICWc5Ypu xX5NoMYwRTb/2RY9IC6wHGf/PFaMhTEpwjjLKx+1QRk7cX0ZxZ5k+Ht1W1lgIfe0yBrP m/7g7KLWiDYockLTXUZhdyhxQ6EEN2wFbEogw=

Добрый день!

Используем nginx 0.7.65 для нашего проекта. (~100к pageviews/сутки, до
150 мб/сек отдача файлов)
Поскольку одно из направление - файлообменник, изображения в
оформлении сайта хранятся в нами же разработанном кластерном бекэнде.
Он позволяет отдавать много больших файлов на хорошей скорости, но к
сожалению пока не удалось полностью победить некоторые задержки при
отдаче файлов.
Поэтому решили использовать nginx для кеширования картинок на веб-страничках.
Одновременно работает 2 nginxа и 6 бекэндов на разных машинах
При запросе картинок, которые нужно кешировать nginx добавляет
заголовок. Бекэнд, увидев этот заголовок возвращает либо картинку,
если она у него есть, либо x-accel-redirect на другой бекэнд, где
должна лежать эта картинка.

Все работает, но есть один неприятный баг:
периодически (примерно 1 раз в сутки) в кеш попадает вместо нужной
картинки другая.
При сверке акссесс-логов найти виновника не удалось.
Может ли это происходить из-за nginx, или может посоветуете, как лучше
отладить запросы между nginx и бекэндом?

Вот конфиг: example.com
server {
        listen   80;
        server_name  d1.example.com d2.example.com  d3.example.com;

        access_log  /var/log/nginx/d1-3.access.log main;

        location ~ ^/([^.]+\.example.com)/files/(\d+) {
                proxy_pass http://$1:80;
                proxy_redirect off;

                proxy_cache img;
                proxy_cache_key "$3";
                proxy_cache_valid 200 60m;
                proxy_cache_valid 404 301 302 1m;

                proxy_buffering on;
                proxy_buffers 4 8k;

                expires      30d;

                internal;
        }

        location ~ /files/(\d+) {
                proxy_pass http://backends/files/$1;
                proxy_set_header X-CacheRequest yes;

                proxy_set_header        Host $http_host;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-For
$proxy_add_x_forwarded_for;
                proxy_redirect          off

                proxy_cache img;
                proxy_cache_key "$1";
                proxy_cache_valid 200 60m;
                proxy_cache_valid 404 301 302 1m;

                proxy_buffering on;
                proxy_buffers 32 1m;
        }


        location / {
                proxy_pass      http://apache;
                proxy_set_header        Host $http_host;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-For
$proxy_add_x_forwarded_for;
                proxy_redirect          off

                set $m "";
                set $i "";

                if ( -f /etc/nginx/offline ) {
                    set $m T;
                }

                if ($remote_addr = 'ХХ.ХХ.ХХ.ХХ') {
                    set $i "${m}";
                }

                # allow from our ip address
                if ($i) { break; }

                # return 503 to others
                if ($m) {
                    return 503;
                }

                if ($http_user_agent ~* 'MSIE') {
                        expires             -1;
                        add_header          Cache-Control no-cache;
                        add_header          Pragma no-cache;
                }
        }

        location ~* robots.txt$ {
                return 404;
        }

        # 404, 50x
        include /etc/nginx/conf.d/common/404.conf;
        include /etc/nginx/conf.d/common/50x.conf;
}
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.