ГлавнаяРегистрацияВходВ закладки

Главная » Статьи » CentOS » Как настроить CentOS
Настройка Nginx в качестве frontend к Apache
Короче говоря, то, ,что Nginx? Nginx - быстрый и простой, но очень мощный и эффективный веб-сервер созданный Игорем Сысоевым для использования на серверых Rambler и вежливости для того, ,чтобы использовать их открытыми исходными кодами создано. Этот сервер может использоваться как самостоятельный HTTP-сервер, либо как обратный прокси-сервер (интерфейс) перед сервером Apache Web или любой другой "тяжелой" нагрузкой на веб-серверых на внутреннем сервере от большого количества одновременных сессий HTTP в целях сокращения потребления быть. Главным образом в связи интерфейс Nginx - бэкэнда с Apache, другими словами, если есть запрос для статических файликов (изображения, CSS и JavaScript), затем обрабатывается независимо Nginx запросу. Если пользователь на каждый сценарий, то Nginx служебный запрос идет к Apache.

В этой теории (которые изобилуют в Интернете) и начать осуществление полосы Apache Apache на ОС CentOS / RHEL.

В этом описании, я подрузомеваю, ,что вы уже установили и настроили сервер Apache!

И так, начнем установку:
[-hide-]1. Для установки nginx подключаем дополнительный репозиторий пакетов EPEL:

[root@centos ~]# rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

2. Проверим активен ли пакет EPEL при помощи команды - yum repolist



Если строчека подчеркнутая красным у вас присутствует значит все в порядке, если ее нет, то репозиторий EPEL надо активировать путем редактирования конфигурационного файлика:

[root@centos ~]# vi /etc/yum.repos.d/epel.repo

В самом верху находим строчку - enable, и ставим вместо нуля, цифру 1, сохраняем и выходим.



3. Теперь у нас все готово для установки nginx:

[root@centos ~]# yum install nginx

Кстати в репозитории epel лежит не очень свежая версия nginx (0.6), если вы хотите установить последнюю версию то здесь необходимо подключить репозиторий CentAlt (но помните CentAlt для работы требует подключенного репозитория epel, поэтому вам его в любом случае придется подключить):

rpm -ihv http://centos.alt.ru/repository/centos/5/i386/centalt-release-5-3.noarch.rpm

или для 64 битной ОС:

rpm -ihv http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm

4. Установив nginx приступим к установке модуля для Apache, под названием – mod_rpaf. Вкратце для чего он нужен. Все запросы к Apache приходят с ip адреса на котором работает nginx (порт 80), соответственно в журнальных файликах Apache будет фигурировать только ip адрес nginx серверы, ,что не совсем корректно. Также без использования данного модуля начнутся проблемы со скриптами в которых используется ip адрес посетителя и перестанет правильно работать механизм ограничения доступа по ip адресам с помощью .htacces. Иными словами данный модуль крайне важен и необходим.

Для начала скачаем модуль к себе на сервер (Кстати, вот тут нам и пригодится репозиторий CentAlt, если не хотите конечно собирать этот модуль из сырцов)):

[root@centos ~]# rpm -ihv http://centos.alt.ru/repository/centos/5/i386/centalt-release-5-3.noarch.rpm

Установим модуль:

[root@centos ~]# yum install mod_rpaf

5. Приступаем к настройке nginx.

user nginx; #укажем пользователя, от имени которого будет работать nginx

Кстати, многие советуют ставить пользователя nobody, но у меня после установки nobody, стала некоректна работать админка в WordPress!

worker_processes 2; #Теперь скажем nginx-у, какое количество рабочих процессов породить. Обычно, хорошим выбором бывает число процессов, равное числу процессорных ядер в вашем сервере, но я рекомендую умножать число ядер на 2.
error_log /var/log/nginx/error.log debug; #куда будут сыпаться логи об ошибках
pid /var/run/nginx.pid;
worker_rlimit_nofile 80000;
events {
worker_connections 2048; # Общее максимальное количество обслуживаемых клиентов будет равно worker_processes * worker_connections; Иногда могут сработать в положительную сторону даже самые экстремальные значения, вроде 128 процессов, по 128 коннектов на процесс, или 1 процесса, но с параметром worker_connections=16384. В последнем случае, впрочем, скорее всего понадобится тюнить ОС.
use epoll;
}

http {
include /etc/nginx/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 88.88.88.11:80; #IP и порт на котором слушает nginx
server_name mysite.ru www.mysite.ru; #указываем имена нашего сайта
server_name_in_redirect off;
access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://127.0.0.1:8080/; #указываем ip и порт на котором теперь будет слушать Apache
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 10m;
}

# Определяем местонахождение и расширения статичных файликов
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js)$ {
root /home/www/mysite.ru;
}

# htaccess и htpasswd не отдаем
location ~ /\.ht {
deny all;
}
}

}

Данный конфигурационный файлик создан только для одного виртуального сайта (хоста), если же у вас их несколько, то имеет смысл описывать все виртуальные хосты в virtual.conf, который расположен по адресу /etc/nginx/conf.d/virtual.conf

Привожу простой пример:

##site.new.ru
server {
listen 127.0.0.1:80;
server_name site.new.ru www.site.new.ru;
...
location ~* ^.+\.(js|gif|jpg)$ {
root /home/www/site.new.ru;
}
}
##site.ru
server {
listen 127.0.0.1:80;
server_name site.ru www.site.ru;
...
location ~* ^.+\.(js|gif|jpg)$ {
root /home/www/site.ru;
}
}

На этом настройку nginx можно считать законченной.

Корректность настройки на предмет ошибок проверяем командой:

[root@centos ~]# nginx -t

6. Приступим к настройке Apache. В файлике конфигурации - /etc/httpd/conf/httpd.conf найдите строчеку
Listen :80 и укажите новый порт на котором будет работь Apache - Listen 127.0.0.1:8080

Далее отредактируйте ваши виртульные хосты в соответсвии с новым портом:

NameVirtualHost 127.0.0.1:8080


ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /home/www/mysite.ru/
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common



7. Настраиваем модуль mod_rpaf длч работы с Apache.

7.1 Добавляем в конфигурационный файлик Apache, следующие строчки:

RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 88.88.88.10 127.0.0.1
RPAFheader X-Real-IP

7.2 Следующий шаг активация модуля. Сделать это можно двумя путями:

Первый путь добавить строчку LoadModule rpaf_module modules/mod_rpaf-2.0.so , в конфигурационный файлик Apache, но при этом удалить (переименовать) файлик mod_rpaf.conf из папки /etc/httpd/conf.d.

Второй путь отредактировать указанный выше файлик – mod_rpaf.conf, добавления туда строчки -

LoadModule rpaf_module modules/mod_rpaf-2.0.so (существующую строчеку редактируем или удаляем)

Оба пути являются правильными.

8. Запускаем (или перезапускуем) все сервисы:

[root@centos ~]# service httpd start

[root@centos ~]# service nginx start

Естественно ошибок быть не должно, если есть ошибки изучаем логи nginx и Apache.

Полезные команды Nginx:

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

nginx -t

Смотрим какая версия nginx у нас установлена:

nginx -v

Расширенная информация с какими опциями собран nginx:

nginx -V

На этом настройка nginx закончена.

P.S. На личном примере я убедился в полезности nginx, установив его на свой сервер. По результатам с сайта проверки времени отклика вашего сайта http://tools.pingdom.com/, я сократил время загрузки своих страниц в среднем на 1-2 секунды.[-hide-]
Просмотров: 23461
Дата: 2011-07-17 22:10:30
Комментариев: 0
Источник: