ПРОЕКТЫ 


  АРХИВ 


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: memcached_pass, proxy_pass, error_page



Hello!

On Wed, Sep 16, 2009 at 05:49:18PM +0400, Костенко Евгений wrote:

> Добрый день.
> 
> Схема следующая есть frontend и два backend'а. Попытка c помощью 0.7.62
> изобразить следующее:
> 
> # на уровне http декларирован upstream, используемый далее
> 
>     upstream  backends  {
>         server   server1.domain.tld weight=4;
>         server   server2.domain.tld weight=4;
>         #server   127.0.0.1 weight=2;
>     }
> 
> # Мелкие файлы пытаемся найти в memcached. Не нашли - по error_page 404 идев
> в @try_backends .
> 
>        location ~* ^.+\.(css|js|ico|gif|png|jpeg|jpg)$ {
>             set $memcached_key "$host$uri";
>             memcached_pass     memcached;
> 
>             error_page 404  =  @try_backends;
>         }
> 
> # В location прописан upstream backends, состоящий из тех самых бэкендов.
> 
>       location @try_backends {
>             proxy_pass  http://backends;
>             proxy_redirect     off;
>             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_next_upstream  http_404;
>             proxy_intercept_errors on;
> 
>             if ($uri ~* \.(css|js|ico)$) { expires 1d; }
>             if ($uri ~* \.(jpg|jpeg|gif|png|ico)$) { expires 1d; }
>             error_page 404  =  @fallback;
> 
>             access_log          off;
>         }
> 
> # Если и тут error_page 404 - идем в @fallback, где собственно root
> /some/path/
> 
>        location @fallback {
>             if ($uri ~* \.(css|js|ico)$) { expires 1d; }
>             if ($uri ~* \.(jpg|jpeg|gif|png|ico)$) { expires 1d; }
> 
>             root        $root_path;
>             access_log          off;
>         }
> 
> #Все сие счатье инклюдится в каждый vhost следующим образом
> 
>    server {
>         listen       xx.xx.xx.xx:80;
>         server_name  www.domain.tld domain.tld;
> 
>         access_log /var/log/nginx/domain.tld.access.log  main buffer=1m;
> 
>         set $root_path   /some/path/vhosts/domain.tld/public_html;
>         include        /usr/local/etc/nginx/common/*.conf;
>     }
> 
> Фокус не удается - memcached и backend'ы проверяются, до fallback дело не
> доходит.
> Полистал архив рассылки, порылся в гугле - ответа не нашел.
> 
> Подскажите пожалуйста, где я промахнулся?

http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#recursive_error_pages

Maxim Dounin



 




Copyright © Lexa Software, 1996-2009.