Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Russian Apache mailing list archive (apache-rus@lists.lexa.ru)

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

Re: [apache-talk] mod_accel - вопросы к разработчику и к т ем, кто его использует



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@xxxxxxxxxxxxx mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =






Спонсоры сайта:

[ Russian Apache ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk archive ]

"Russian Apache" includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/) See Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C) 1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.