Welcome! Log In Create A New Profile

Advanced

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

Алферов Василий
April 02, 2010 06:36AM
Добрый день!

Используем 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@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

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

Алферов Василий April 02, 2010 06:36AM

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

Михаил Монашёв April 02, 2010 09:46AM

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

Алферов Василий April 02, 2010 10:12AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 191
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready