Главная страница
December 5, 2008
Статьи
     * tell a friend * print * site map * 
    Новости
    Статьи
    Каталог ссылок
    Связаться с нами
    Каналы новостей
    Форумы nginx.info
    Архив рассылки nginx
    ЧАВо
    Поиск по сайту
    Баннер
    Опросы
Username

Password

Click here to register.

Главная страница > Статьи

Наши статьи

Наши статьи об nginx, apache, lighttpd, fastcgi. вэб-технологиях и решениях, безопасности и тому подобном.

Howto - настройка аналога mod_realip для apache 2.0.x (mod_rpaf)

 

Доброго времени суток,

    Долго я изучал и пробовал lighttpd и остановил свой выбор на nginx, хоть и нужен SSL тоже :) (стабильный SSL, но ssl в nginx еще не пробовал).

Примечание автора: На тот момент стабильность работы ssl в nginx еще известна не была.

В процесси настройки и внедрения nginx - возникла единственная проблема на Апаче 2.0.х - восстановление реального IP адреса на backend сервере (apache2). Для апача 1.3.х - такой модуль существует, который написал Игорь Сысоев, он называется mod_realip. После некоторых раздумий и чтения документации по mod_headers и остальной компании, стало понятно, что это не поможет в данной ситуации. Тогда я зарылся в любимый http://www.google.com и после 20 минут лирического диалога с полем поиска нашел нужный модуль, им оказался mod_rpaf. Скачать его можно отсюда - http://stderr.net/apache/rpaf/

Я его скачал, собрал и установил. Устанавливается он очень просто, с помощью apxs: apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

После этого добавляем его строкой в апач:

LoadModule rpaf_module modules/mod_rpaf-2.0.so

Директивы этого модуля описаны в README файле, который идет к нему. Их всего три:

- RPAFEnable - включить модуль

- RPAFproxy_ips - IP адрес(а) фронт-энд сервера(-ов)

- RPAFsethostname - доводит до ума поле HOST, как на фронтэнде.

Можете создать просто mod_rpaf.conf и положить его в conf.d/..., текст следующий:

---------------------------- mod_rpaf.conf ----------

# LoadModule rpaf_module modules/mod_rpaf-2.0.so

#Configuration Directives: RPAFenable On

# Enable reverse proxy add forward RPAFproxy_ips YOUR_PROXY_SERVER_IP_LIST_OR_ONE_IP

# which ips are forwarding requests to us

#RPAFsethostname On

# let rpaf update vhost settings

# allows to have the same hostnames as in the "real"

# configuration for the forwarding Apache ------------------------------------------------------

RPAFproxy_ips - тут список IP вашего фронтенда или фронендов,

Пример: RPAFproxy_ips 127.0.0.1 192.168.1.45 182.142.35.24

Далее добавляем в конфигурацию nginx (раздел server), следующую строчку:

proxy_add_x_forwarded_for on; (до версии nginx 0.1.29)

(После версии 0.1.29 следует использовать: 

proxy_set_header  X-Forwarded-For       $remote_addr;)

Теперь nginx передает бэкэнду IP клиента в поле: X-Forwarded-For, а на другом конце его подхватит mod_rpaf и сделает свое грязное дело ;)

Если Вы хотите сохранить все хедеры клиентов, которые ходят через прокси, то тогда надо подправить mod_rpaf на нужный Вам header (который он будет принимать за несущий реальный адрес клиента) и прописать его в proxy_set_header. 

Теперь оба сервера перезапускаем любым способом, кому как нравится. :)
И Voila, как говорят знакомые бразильцы :)

Все это проделано на Fedora Core 2 и работает.

С Уважением, Дмитрий.

Owner and Founder of Remote Admin Service http://remote-admin-service.encrypted-life.net

23 декабря 2004

 

Copyright 2004-2005 Encrypted-Life.Net. All rights reserved.

powered by REMOTE ADMIN SERVICE