Настройка nginx в качестве front-end к apache | Вебмастер DataLife Engine

Настройка nginx в качестве front-end к apache

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

Для этого используем модель front end/back end системы при которой в качестве front end выступает легкий web сервер nginx, а в качестве back end выступал все тот же apache.

Преимущества подобной схемы можно понять на небольшом примере. Представьте себе, что вашему web серверу apache необходимо обслужить порядка 1000 запросов одновременно, причем многие из этих клиентов подключены к медленным каналам связи. В случае использования apache мы получим 1000 процессов httpd на каждый из которых будет выделена оперативная память, и эта память не освободится до тех пор, пока клиент не получит запрошенный контент (в идеальном варианте конечно).

В случае схемы с применением front end/back end сервера получим значительную экономию системных ресурсов за счет того, что после того как пришел запрос клиента, nginx передает запрос apache и быстро получает ответ. В итоге apache после того как отдал ответ nginx освобождает память, далее с клиентом взаимодействует web сервер nginx, который как раз и написан для раздачи статического контента, большому количеству клиентов, при незначительном потреблении системных ресурсов.

nginx — это HTTP-сервер и почтовый прокси-сервер, разработанный замечательным специалистом Игорем Сысоевым. Сейчас nginx работает на множестве серверов, в том числе на большинстве серверов Рамблера.

Установка nginx

Переходим в /usr/local:

# cd /usr/local

Создаем директорию:

# mkdir nginx

Переходим в директорию /usr/local/nginx:

# cd nginx

Загружаем дистрибутив:

# wget http://www.sysoev.ru/nginx/nginx-0.7.1.tar.gz

Распаковываем:

# tar zxf nginx-0.7.1.tar.gz

Переходим в директорию nginx-0.7.1:

# cd nginx-0.7.1

Конфигурируем:

# ./configure

Собираем nginx:

# make

Устанавливаем nginx:

# make install

nginx будет установлен в каталог /usr/local/nginx/, директорию nginx-0.7.1 можно удалить.

Проблемы конфигурирования

Возможно, при конфигурировании возникнет ошибка из-за того, что не найдена та или иная библиотека, например, библиотека PCRE:

./configure: error: the HTTP rewrite module requires the PCRE library.

You can either disable the module by using —without-http_rewrite_module

option, or install the PCRE library into the system, or build the PCRE library

statically from the source with nginx by using —with-pcre= option.

Необходимо загрузить PCRE:

# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.tar.gz

Распаковываем pcre-7.7.tar.gz:

# tar zxf pcre-7.7.tar.gz

Конфигурируем nginx, указывая путь к PCRE:

# ./configure —with-pcre=/usr/local/nginx/nginx-0.7.1/pcre-7.7

Реальные IP-адреса

При использовании типовой конфигурации nginx, Apache будет получать все запросы с единого IP-адреса, что не позволит вести корректную статистику.

Для решения проблемы необходимо установить дополнительный модуль reverse proxy add forward module.

Переходим в /usr/local/nginx:

# cd /usr/local/nginx

Загружаем дистрибутив:

# wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.5.tar.gz

Распаковываем:

# tar -zxf mod_rpaf-0.5.tar.gz

Переходим в /usr/local/nginx/mod_rpaf-0.5:

# cd /usr/local/nginx/mod_rpaf-0.5

Устанавливаем

# apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

Или

# apxs2 -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

Настройка Apache

В файле конфигурации Apache /etc/httpd/conf/httpd.conf укажем Apache на просмотр порта 8080, а не 80, для этого

Listen 8080

вместо

Listen 80

и добавим строку:

NameVirtualHost *:8080

Необходимо откорректировать по адресу /var/www/vhosts/site.ru/conf/httpd.include или другом файле с описанием VirtualHost-ов на сервер, в файле заменяем:

<VirtualHost [IP-адрес или домен]:80>

на

<VirtualHost *:8080>

Настройка mod_rpaf

Добавьте модуль mod_praf в файл конфигурации Apache для этого в файл /etc/httpd/conf/httpd.conf добавьте следующую строку:

LoadModule rpaf_module modules/mod_rpaf-2.0.so

Затем в этот же файл добавьте строки

# Mod_rpaf settings
RPAFenable On
RPAFproxy_ips 127.0.0.1
RPAFsethostname On

Перезапускаем Apache:

# service httpd restart

Настройка nginx

Конфигурационный файл nginx располагается /usr/local/nginx/conf/nginx.conf

Пример конфигурационного файла:

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

log_format main ‘$remote_addr — $remote_user [$time_local] $status ‘

‘»$request» $body_bytes_sent «$http_referer» ‘

‘»$http_user_agent» «http_x_forwarded_for»‘;

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

sendfile on;

tcp_nopush on;

tcp_nodelay on;

server {

listen 80 default;

server_name site.ru www.site.ru;

# access_log /var/log/httpd/access.log main;

# Main location

location / {

proxy_pass http://127.0.0.1:8080/;

proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

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;

}

# Static files location

location ~*^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js)$

{

root /var/www/vhosts/site.ru/httpdocs/;

}

}

}

В секции server_name site.ru www.site.ru; указывается список доменов, которые будут обрабатываться nginx.

nginx берет на себя функции по отдаче статики, например графических файлов. Список расширений указывается в следующем блоке:

# Static files location

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js)$ {

root /var/www/vhosts/site.ru/httpdocs/;

}

Не забудьте указать корректный путь к корневой директории сайта.

Автоматический запуск nginx

Для автоматического запуска добавим строку в /etc/rc.local

/usr/local/nginx/sbin/nginx

  • Posted on 1. июля 2009
  • Written by admin
Оставить комментарий


Интересные материалы

http://kladoffka.com PlayBoy #1 (январь 2012) Аргентина



Еще нет никаких комментариев.

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

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