0

Связка apache+nginx

Речь пойдет об установке связки apache+nginx, чтобы ускорить отдачу статического контента сайтов.
Всё это дело происходит на FreeBSD 8.1 Release.
Что уже имеется на данный момент:
-Apache 2.2.15
-php 5.2.13
-MySQL 5.1.48

Для начала обновим  дерево портов
# portsnap fetch update

Вообще даже лучше впихнуть эту строку в crontab и обновлять порты по расписанию, чтобы иметь всегда свежую базу.

Ставим nginx
# cd /usr/ports/www/nginx
# make install clean

Если ошибок в ходе установки не возникло, то идем в /etc/rc.conf и добавляем строку
#nginx_enable=«YES»
Это позволит запускать нам nginx при загрузке ОС

Основной конфигурационный файл nginx лежит в /usr/local/etc/nginx/nginx.conf

Так как nginx тоже является веб-сервром, то на один порт с апачем их повесить не удастся. Теперь нужно извратиться и перенести Apache на другой порт. Я решил перекинуть на 88. Идем в httpd.conf, который расположен у нас в /usr/local/etc/apache22 , и ищем там что-то вроде этого
Listen 80

Как Вы наверное уже догадались, нам нужно исправить это на
Listen 88

Теперь нужно проделать похожую процедуру с файлом httpd-vhosts.conf, который лежит в /usr/local/etc/apache22/extra

Ищем
NameVirtualHost *:80
и заменяем на
NameVirtualHost *:88

Далее для каждого виртуального хоста
Ищем
<VirtualHost *:80>
и заменяем на
<VirtualHost *:88>

В этих строках вместо * у Вас может быть указан ip-адрес для которого слушается порт.

Если мы хотим, чтобы ngninx передавал Apache’у реальные ip-адреса наших клиентов, то нам необходимо установить  mod_rpaf
Идем в
#cd /usr/ports/www/mod_rpaf2
#make install clean

Теперь опять идем в httpd.conf и раскомментируем строку
LoadModule rpaf_module        libexec/apache22/mod_rpaf.so
..и ниже добавляем

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

Перегружаем апач и проверяем доступность сайтов по 88-му порту
#/usr/local/etc/rc.d/apache22 restart
Набираем в браузере http://адрес_сайта:88
Если все ок, то идем дальше.

Настраиваем NGINX
В принципе достаточно добавить/изменить в директиве server следующие пункты:

location / {
proxy_pass         http://127.0.0.1:88/;
proxy_redirect     off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size       64m;
client_body_buffer_size    256k;
proxy_connect_timeout      90;
proxy_send_timeout         90;
proxy_read_timeout         90;
proxy_buffer_size          16k;
proxy_buffers              4 32k;
proxy_busy_buffers_size    64k;
proxy_temp_file_write_size 64k;
#Здесь мы указываем какие статические файлы будут обрабатываться nginxом
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js|html|swf|mp3)$ {
#путь до папки с файлами этого хоста
root   /usr/local/www/apache22/data;
}

proxy_pass         http://127.0.0.1:88/; — это локальная ссылка на веб-сервер Apache, который мы слушаем на 88 порту.
Если у Вас несколько сайтов, то для каждого из них необходимо создать свою директиву server и вписать в переменную server_name  имя сервера(например ваш_домен.рф)

Перезапускаем nginx
#/usr/local/etc/rc.d/nginx restart

…и радуемся жизни

Настройка и администрирование Windows/Linux, сетевого оборудования D-link, cisco | hotbits.ru

XpycT

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *