Прикручиваем nginx к Plesk-панели на CentOS.

Все по разному пытаются прикрутить nginx к контрольной панели Plesk. Не всегда все работает так, как хотелось бы. За долгое время, опробовав много разных вариантов, остановился на одном из них. Возможно вариант и не самый лучший, но лучший из того что я пробывал. Есть свои определенные минусы, например, после создания/удаления/переименования домена, необходимо запустить скрипт конфигурации nginx через шел, не работает AtMail, хотя Horde работает без проблем.

Первым долгом установим nginx:
# cat > /etc/yum.repos.d/nginx.repo << EOF
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=0
enabled=1
EOF

# yum install nginx

Далее скачиваем файл по следующей ссылке nginx_plesk.zip.
Распаковываем его в /etc/nginx/plesk
Копируем файлы конфигурации:

# cp /etc/nginx/plesk/nginx.conf /etc/nginx/
# cp /etc/nginx/plesk/proxy.conf /etc/nginx/

идем в /etc/nginx/plesk/

# cd /etc/nginx/plesk/

и запускаем конфигуратор

# sh generate_nginx_conf.sh

данный срипт создаст файлы конфигурации для nginx в папках /var/www/vhosts/DOMAIN/conf/nginx.conf

Следующим шагом меняем порт apache на 8080 следующим образом:

# /usr/local/psa/admin/sbin/websrvmng --set-http-port --port=8080
# /usr/local/psa/admin/sbin/websrvmng --reconfigure-all
# /usr/local/psa/admin/sbin/webmailmng --disable --name=horde
# /usr/local/psa/admin/sbin/webmailmng --enable --name=horde
# /usr/local/psa/admin/sbin/webmailmng --disable --name=atmail
# /usr/local/psa/admin/sbin/webmailmng --enable --name=atmail

Если сделать это руками в конфигах самого апача, то Plesk все вернет обратно, так что меняем именно так, как я описал выше. После этого апачь будет слушать на порту 8080, если не хотите чтоб можно было заходить напрямую, закройте этот порт на файрволе.

рестартуем apache и nginx:

# service httpd restart
# service nginx restart

Проверяем работу.
При каждом добавление/изменении домена, алиаса к нему, либо сабдомена, необходимо заного запускать:

# sh generate_nginx_conf.sh

в папке /etc/nginx/plesk/

При необходимости прикручиваем mod_rpaf, чтобы в логах apache были реальные IP-адреса, а не адрес самого сервера:

# yum install httpd-devel
# cd /usr/local/src
# wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
# tar xzvf mod_rpaf-0.6.tar.gz
# cd mod_rpaf-0.6
# apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

Редактируем /etc/httpd/conf/httpd.conf , добавляя в секцию где вызываются модули

LoadModule rpaf_module modules/mod_rpaf-2.0.so

и в конец файла

RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 IP_ADDRESS_OF_YOUR_SERVER
RPAFheader X-Forwarded-For

Перезапускаем apache

# /etc/init.d/httpd restart

Как я уже заметил выше, почему-то не работает веб-морда почты AtMail, хотя Horde прекрасно работает.
И еще, этот вариант подходит именно для своего сервера, не для клиентов. В случае если Вы часто меняете/добавляете домены — это не лучший выбор. Хотя можно делать по крону проверку на изменение/добавление доменов, и запускать данный скрипт автоматом. Думаю, прикрутить такой к работающему серверу не составит труда. Тем более наработки на проверку изменений у меня прекрасно описаны здесь.

Удачи в настройках.
© shadow_alone