Установка и настройка nginx как frontend и Apache как backend
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
Добавим строку загрузки модуля в /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 на просмотр порта 8080, а не 80, для этого
Listen 8080
вместо
Listen 80
и добавим строку:
NameVirtualHost *:8080
Необходимо откорректировать по адресу /var/www/vhosts/site.ru/conf/httpd.include или другом файле с описанием VirtualHost-ов на сервер, в файле заменяем:
<VirtualHost [IP-адрес или домен]:80>
на
<VirtualHost *:8080>
Перезапускаем 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;
# gzip_module
gzip on;
gzip_min_length 1024;
gzip_proxied any;
gzip_types text/css application/x-javascript;
gzip_vary on;
# map_module
map $http_host $root_dir {
hostnames;
.site1.ru /home/site1.ru/www;
.site2.ru /home/site2/www;
}
root $root_dir;
server {
listen 80 default;
server_name .site1.ru .site2.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 $root_dir;
}
}
}
В секции 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
Возможные проблемы
Отсутствует gcc и make
Необходимо установить gcc и make, выполним:
# yum install gcc
# yum install make
вэб сервер,
http сервер,
apache,
nginx,
администрирование
01.05.2009, 1089 просмотров.

