Plesk+nginx+apache+drupal

9 января 2009 в 16:28

Несколько не связано с Drupal, однако в теме. Господа, помогите решить студенту-медику не медицинскую задачу:
Дано:
Fedora 8
Plesk 8.6.0 в исходной конфигурации с ее апачем
2IP
Все что будет - будет под Drupal

Задача:
Настроить Плесковский апач как бэкэнд к фронтэнд апачу. Всю сеть облазил, что-то нашел, но что нашел - не понял. На носу сессия - писать истории болезни, мануалы к веб-серверам и линуксу сил читать нет. Отцы поможите. Всем откликнувшимся - большое спасибо.

Комментарии

Панель Parallels Plesk Panel 8.6.0 ОС FreeBSD 6.3 В системе имеются 2 IP:

105.112.34.157 - тут работают все клиенты
105.112.37.105 - тут будем поднимать большой проект, который будет вести NGINX

из портов ставим nginx:

# cd /usr/ports/www/nginx
# make install

Идем в /usr/local/etc/nginx и правим nginx.conf :

worker_processes 2;
error_log /var/log/nginx/error.log debug;
pid nginx.pid;
worker_rlimit_nofile 51200;

events {
worker_connections 51200;
use kqueue;
}

http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
server {
listen 105.112.37.105:80; # слушаем этот IP на нем работает большой проект
server_name mydomain.ru;
access_log /var/log/nginx/105.112.37.105.access.log main; #пишим логи этого IP

location / {
proxy_pass http://127.0.0.1:8081/; #заворачиваем на локалхост
proxy_redirect off;

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
}

Итого мы имеем, что запросы, приходящие на 105.112.37.105:80 пробрасываются на 127.0.0.1:8081

Запускаем nginx:
#/usr/local/sbin/nginx

убеждаемся, что он жив и здоров:

user@host# ps -aux | grep nginx
root 1097 0.0 0.0 2072 1324 ?? Is 9:02AM 0:00.00 nginx: master process /usr/local/sbin/nginx
www 1098 0.0 0.1 5232 4560 ?? S 9:02AM 1:00.55 nginx: worker process (nginx)
www 1099 0.0 0.1 5264 4496 ?? S 9:02AM 1:07.88 nginx: worker process (nginx)

Ставим модуль mod_extract_forwarded2, чтобы у нас правильно обрабатывались клиентские IP, иначе все посещения апача будут с судя по логам с локалхоста:

#cd /usr/ports/www/mod_extract_forwarded2
# make install

Идем в /usr/local/etc/apache2 и правим httpd.conf:

Listen 127.0.0.1:8081
# Добавляем загрузку модуля. Сам почемуто не добавляется
LoadModule extract_forwarded_module libexec/apache2/mod_extract_forwarded2.so

идем в /usr/local/etc/apache2/Includes и правим zz010_psa_httpd.conf:

Было:

NameVirtualHost 105.112.34.157:80
NameVirtualHost 105.112.37.105:80
NameVirtualHost 105.112.34.157:443
NameVirtualHost 105.112.37.105:443

Стало:

NameVirtualHost 105.112.34.157:80
NameVirtualHost 105.112.37.105:80
#NameVirtualHost 105.112.34.157:443
NameVirtualHost 127.0.0.1:8081
#NameVirtualHost 105.112.37.105:443

т.е. мы заставляем апач забыть про 105.112.37.105:80 и заставляем слушать 127.0.0.1:8081

далее идем /usr/local/www/vhosts/domainame.ru/conf и редактируем httpd.include

находим

<VirtualHost 105.112.37.105:80>

и меняем на

<VirtualHost 127.0.0.1:8081>

Проверяем, что не сделали ошибок и перезапускаем Апач:

user@host # /usr/local/etc/rc.d/apache2 configtest
Syntax OK
user@host # /usr/local/etc/rc.d/apache2 restart

После этого все работает замечательно.

Сам сервер работает вот тут: http://www.kalitva.ru

6 марта 2009 в 21:09