Переменное имя для proxy_pass

Sukhachev Andrew andrew at comby.com
Wed Sep 19 12:00:21 MSD 2007


Добрый день.

  Есть следующая ситуация.

  Есть куча несколько бакэндов (серверов):
    srv1.company-internal.com
    ...
    srvN.company-internal.com

  Есть 1 кэширующий прокси, который обслуживает домены:
    srv1.company.com
    ...
    srvN.company.com

  Смысл такой, что прокси кэширует запросы к бакэндам (proxy_store) по куче разных location'ов.
  Проблема в том, что бакэнды имеют разные IP и каждый запрос на публичный домен надо отправлять на
  соответствующий private домен. То есть хочется на прокси сделать что-то вроде:
  server {
    server_name       srv1.company.com .. srvN.company.com;
    location1 {
       ...
       error_page 404 = @fetch;
    }
    ...
    locationN {
       ...
       error_page 404 = @fetch;
    }
    location @fetch {
       internal;
       if ($host ~ "^(.*).company.com$") {
          set     $h      $1.company-internal.com;
       }
       proxy_pass                      http://$h;
       # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       proxy_store                     /path/$host$request_uri;
       proxy_store_access              user:rw  group:rw  all:r;
    }
  }

  Вопрос - как это лучше сделать? Делать "server {}" для каждого домена очень не хочется...

-- 
Best regards,
 Sukhachev Andrew






More information about the nginx-ru mailing list