Смотрел я долго на lighttpd и выбрал nginx, хоть и нужен SSL тоже :)
(стабильный, но ssl в nginx еще не пробовал).
И возникла единственная проблема на Апаче 2.0.х - реальный IP адрес на
backend сервере.
Для апача 1.3.х - такой модуль есть, который написал Игорь Сысоев.
После раздумий и чтения документации по mod_headers и остальной
компании, понял, что это не поможет.
Тогда я зарылся в гугль и после 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 передает бэкэнду IP клиента в поле: X-Forwarded-For, а на другом
конце его подхватит mod_rpaf и сделает свое грязное дело ;) :)
Теперь оба сервера перезапускаем любым способом, кому как нравится. :)
И Voila, как говорят знакомые бразильцы :)
Все это проделано на Fedora Core 2 и работает.
С Уважением,
Дмитрий.