From: zsh <ssh2@bk.ru.>
Date: Sun, 18 Sep 2007 17:02:14 +0000 (UTC)
Subject: Настройка совместной работы Apache и nginx
Оригинал: http://ssh3.livejournal.com/29252.html
Настройка совместной работы Apache, nginx для обслуживания
1. Сборка
Жизнь в стиле Debian уже почти отучила меня собирать что-либо
самостоятельно. :) Но случай с nginx, стал исключением. Ни для
Debian, ни для FC4, которую мне любезно поставил на сервер
хостер пакета мне найти не удалось. Пришлось вспоминать.
До сборки я использовал "configure" с опциями:
Процесс конфигурирования можно закончен, проверим синтаксис
конфигурационного файла:
#nginx -t
b. Настройка apache
Что касается настройки apache, поскольку nginx
сконфигурирован таким образом, что все полученные на порт 80
запросы пересылает backend на ip-адрес: 127.0.0.1 и порт
8080, то достаточно в рабочем конфиге apache изменить
следующие директивы:
Следует отметить, что скриптами IPB активно используются
ip-адреса посетителей, а в случае использования конфигурации
приведенной выше, все посетители будут для apache приходить c
одного ip-адреса: 127.0.0.1, что не правильно.
Разрешить ситуацию поможет сторонний модуль для apache с
трудно произносимым названием mod_rpaf, что я вляется
аббревиатурой от reverse proxy add forward.
Некоторые заметки о настройке совместной работы apache и
mod_rpaf можно найти здесь.
Поскольку модуль mod_rpaf является сторонней разработкой,
сборку его придется провести самостоятельно. В случае с FC4
мне потребовалось установить пакет httpd-devel.i386 командой:
#yum install httpd-devel.i386.
Сборка модуля выглядит так:
в Makefile устанавливаем значение APXS=/usr/sbin/apxs, затем
выполняем:
#make rpaf-2.0 && make install-2.0.
В конфигурационный файл apache добавляем:
...
LoadModule rpaf_module modules/mod_rpaf-2.0.so
...
## Mod_rpaf settings
RPAFenable On
RPAFproxy_ips 127.0.0.1 realip [realip1]
RPAFsethostname On
В конфигурационный файл nginx в раздел server необходимо
добавить:
...
server {
...
# Main location
location / {
...
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
...
c. Замечания по интеграции в дистрибутив
1. logrotate
Честно говоря я не очень глубоко знаком с устройством FC
в этой части и знакомиться особого желания не испытываю,
поэтому поступил проще, скопировав с новым именем
init-cкрипт от vsftp и поправил его под собственные
нужды, возможно не везде идеологически правильно, но
работоспособно!
#!/bin/bash
# v.0.0.2
# nginx - This shell script takes care of starting and stopping nginx.
#
# chkconfig: - 60 50
# description: nginx [engine x] is light http web/proxy server
# that answers incoming ftp service requests.
# processname: nginx
# config: /usr/local/etc/nginx.conf
# Source function library.
. /etc/rc.d/init.d/functions
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reconfigure)
if [ -f /var/lock/subsys/$prog ]; then
kill -1 `cat /var/run/nginx/nginx.pid 2>/dev/null`
RETVAL=$?
fi
;;
status)
status $prog
RETVAL=$?
;;