ПРОЕКТЫ 


  АРХИВ 


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]

Re: Перебор именованных locati on



Спасибо, исправлю


возник еще вопрос по данной схеме но уже с кешированием

    location ~* "^/[a-z0-9]{32}/[a-z]+/g2/c/" {
        error_page   404  =  @remote;
        fastcgi_pass   ...;
        fastcgi_intercept_errors on;
        fastcgi_cache  fastcgi_cache;
        fastcgi_cache_valid 200 302 1w;
        fastcgi_cache_valid  404 2m;
        fastcgi_cache_use_stale updating error timeout invalid_header http_500 http_503 http_404;
        fastcgi_cache_key "$request_method|$uri";
    }

    location @remote {
        fastcgi_pass   fpm_remote;
        fastcgi_cache  fastcgi_cache;
        fastcgi_cache_valid 200 302 1w;
        fastcgi_cache_valid  404 2m;
        fastcgi_cache_use_stale updating error timeout invalid_header http_500 http_503 http_404;
        fastcgi_cache_key "$request_method|$uri";
    }

без кеша все работает как положено
но если включить кеш то получается что после обращения к бекенду ответ с кодом 404 попадает в кеш, а потом именованый локейшн берет ответ из кеша

одинаковые ключи сделаны специально чтобы независимо от того откуда был получен ответ результат кешировался


собственно вопрос:
как сделать так чтобы 404 ответ в кеш не попадал при локальной обработке, но при получении 404 от удаленного бекенда все-таки складывался?

2011/8/29 Igor Sysoev <igor@xxxxxxxxx>
On Mon, Aug 29, 2011 at 03:54:22PM +0300, Alexander Moskalenko wrote:
> спасибо, помогло
>
>
> - fastcgi_interpcept_errors  on;
> + fastcgi_intercept_errors  on;
>
> также получилась вот такая конструкция для другого алгоритма
>
> location ~* "^/(?<section>.*)/g_\d+/(?<img_name>.*)/.*\.(gif|jpe?g)$" {
>         try_files $uri @remote;
> }
>
> location @remote {
>         include proxy_params;
>         proxy_pass http://static_remote;
>         proxy_intercept_errors on;
>         error_page 404 = /$section/nophoto/$img_name.png;
>         proxy_store             on;
>         proxy_store_access      user:rw  group:rw  all:rw;
> }

На будущее - всегда делать префиксы в УРЛах для локализации регулярных
выражений:

location /some_action/ {
  location ~* "^/some_action/(?<section>.*)/...



--
Игорь Сысоев
http://sysoev.ru

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

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


 




Copyright © Lexa Software, 1996-2009.