ПРОЕКТЫ 


  АРХИВ 


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@xxxxxxxxx
  • Subject: кэширование для гостей, реализация
  • From: "1nsk.ru" <alfa@xxxxxxx>
  • Date: Tue, 24 Nov 2009 18:46:07 +0600

День добрый.

Имеется толстая железка, на которой крутится всё файло и все базы.
Имеется пачка тонких железок, которые round robin отдаются людям.

Изначально эти железки проксировали только статику на себя, а динамику
забирали с backend

Допиливаю схему кэширования динамики для гостей на самих frontend.

Вроде как пашет, но когда запрашивается servername.ru то nginx на
frontend выдает 403, за отсутствием индексного файла, 404 почему-то не
хочет схватывать, всё остальное обрабатывается нормально, несуществующие
директории и т.п. корректно с backend чекаются и проксируются при
необходимости.

Где бага (ну кроме генофонда) ?


proxy_cache_path /var/www/cache levels= keys_zone=wholepage:150m;
...

server {
set $cached 0;
listen  servername.ru;
#отдаём домены в том числе юзверьские xyz.servername.ru
server_name servername.ru *.servername.ru;
error_page   502 503 504 509 /500.html;
error_page 404 = @nocached;
expires      epoch;
root                    /var/www/html;

location = /500.html {
}

location ~*
^.+\.(jpg|jpeg|gif|gz|zip|flv|rar|wmv|avi|css|swf|png|htc|ico|mpeg|mpg|txt|mp3|mov|js)$
{
error_page              404 = @fetch;
}

#засасываем статику
location @fetch {
proxy_pass              http://backend;
proxy_store             on;
proxy_temp_path         /var/www/_fetch;
proxy_set_header  Host  servername.ru;
proxy_set_header  If-Modified-Since  "";
root                   /var/www/html;
}

#зарегистрированным не кэшируем
location @nocached {
proxy_pass        http://backend;
proxy_set_header  Host        $host;
proxy_set_header  X-Real-IP  $remote_addr;
proxy_set_header  X-Forwarded-For       $proxy_add_x_forwarded_for;
}

#привет гостям
location @cached {
proxy_pass        http://backend;
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_cache wholepage;
proxy_cache_valid 200 301 302 304 5m;
proxy_cache_key
"$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Cache-Control" "Expires";
}

location / {
if ($http_cookie !~ "userid" ) {
set $cached 1;
}

if ($request_method = POST) {
set $cached 0;
}

if ($request_method != GET) {
set $cached 0;
}

if ($cached = 1) {
error_page 404 405 502 504 = @cached;
break;
}

if ($cached = 0) {
error_page 404 405 502 504 = @nocached;
break;
}

return 404;
error_page 404 405 502 504 = @nocached;
break;

}
}

-- 
Денис (ALFA-RIPE)


_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.