Welcome! Log In Create A New Profile

Advanced

кэширование для гостей, реализация

1nsk.ru
November 24, 2009 07:48AM
День добрый.

Имеется толстая железка, на которой крутится всё файло и все базы.
Имеется пачка тонких железок, которые 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@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

кэширование для гостей, реализация

1nsk.ru November 24, 2009 07:48AM

Re: кэширование для гостей, реализация

Andrey Zloy November 24, 2009 10:16AM

Re: кэширование для гостей, реализация

Anonymous User November 24, 2009 01:26PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 227
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