ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА














     АРХИВ :: Apache-Talk
Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [apache-talk] =?koi8-r?B?bW9kX2FjY2VsIC0g18/Q0s/T2SDLINLB2tLBws/U3snL1SDJIMsg1A==?==?koi8-r?B?xc0sIMvUzyDFx88gydPQz8zY2tXF1A==?=



On Sat, 9 Feb 2002, Alexey Zvyagin wrote:

> 1. Вот немного смутившая фраза из документации (описание директивы
> AccelPass)
> 
> "В запрос всегда включается заголовок "Host", содержащий имя и порт (если
> порт не равен 80) сервера, на который перенаправлен запрос."
> 
> Как я понимаю, перенаправляется на http://backend/ в примере, значит будет
> "Host: backend" или все таки тоже поле, что было передано клиентом frontend
> серверу? Как я понимаю, последнее должно быть. Иначе, если первое, то если
> несколько виртуальных хостов, то работать не будет.

Передаётся именно "Host: backend", и именно поэтому несколько name-based
виртуальных бэкендов работает. Имя фронтэнда может передаваться в заголовке
"X-Host", но это нужно задавать явно "AccelSetXHost on".

> 2. Есть ли положительный опыт работы скрипта на сервере, где frontend
> крутится на public_IP, а backend крутится на той же машине на 127.0.0.1 и
> backend имеет много виртуальных хостов?

У меня такого опыта нет, но работать должно.

> 3. Можно ли случая, описанного в п.2 описать только одну директиву
> AccelPass           /       http://backend/
> 
> Чтобы она все запросы ко всем виртуальным сайтам транслировала на backend,
> но backend понимал к какому сайту запрашивается из заголовка Host? И на
> frontend должен ли быть описан каждый виртуал-хост или достаточного одного,
> а на backend-е всех перечисленных в конфиге хостов?

Только с помощью mod_rewrite:
RewriteRule  ^/(.*)$    http://%{HTTP_HOST}/$1   [P]

> 4. Есть ли простое решение от следующего? Сейчас у многих виртуал-хостов у
> нас есть в конфигах запреты на директории для всех IP  кроме такого-то
> (например, для админ-скриптов)... Как я понимаю, в связи с переходом на
> mod_accel, такие запреты надо будет переносить на frontend. То есть конфиг
> надо разносить, так как часть настроек все таки будет на backend.

Мой mod_realip не поможет, поскольку он меняет на бэкенде только
r->connection->remote_ip, но есть модуль (сейчас назвать не могу),
который меняет и r->connection->remote_addr.sin_addr и поэтому
может использоваться для проверки адресов mod_access'ом.

> 5. Если я выбрал схему: на frontend у меня описаны все виртуал-хосты на
> public_IP адресе, а на frontend у меня те же виртуал-хосты, но на 127.0.0.1
> адресе. Для каждого виртуала я описал на frontend директиву AccelPass и
> одинаковую для всех виртуалов.
> AccelPass           /       http://127.0.0.1/
> Какой HTTP заголовок Host будет в запросе к backend для каждого виртуала?

Host: 127.0.0.1

> 6.Если опция указана директива "AccelAddXForwardedFor off", но клиент
> передал X-Forwarded-For заголовок frontend-у, то передаст ли он этот
> заголовок frontend к backend-у? (наши скрипты очень нуждаются в этом
> заголовке от клиента).

Если он есть, то передаётся всегда. Директива определяет, нужно
ли добавлять адрес, с которого пришли к mod_accel или нет.
То же самое касается "AccelAddVia".

> 7. Ну и вопрос как в п.6, только наоборот, если есть директива директива
> "AccelAddXForwardedFor on", а клиент передал этот заголовок frontend-у, то
> он "перетрет" его для backend-а на свой, либо добавит IP клиента в список к
> существующему, либо перепишет тот IP, который был в оригинальном запросе
> клиента. Наши скрипты нуждаются знать не только реальный IP клиента, но еще
> IP, от которого обращался клиент к прокси, через который он обратился к
> нашему frontend-у

Только добавление. Если же заголовка не было, то он формируется.
Есть другой заголовок - "X-Real-IP", в нём указывается адрес клиента.

Игорь Сысоев

=============================================================================
=               Apache-Talk@lists.lexa.ru mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =



 




Copyright © Lexa Software, 1996-2009.