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 дело не
> доходит.
> Полистал архив рассылки, порылся в гугле - ответа не нашел.
>
> Подскажите пожалуйста, где я промахнулся?