Главная Публикации.txt Установка и настройка nginx как frontend и Apache как backend

Установка и настройка 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

tagsвэб серверhttp серверapachenginxадминистрирование 

01.05.2009, 1089 просмотров.