Инструменты пользователя

Инструменты сайта


nginx_как_front-end_к_apache

**Это старая версия документа!**

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

Для выполнения поставленной задачи было проведено тестирование модели front-end/back-end системы, при которой в качестве front-end выступает легкий веб-сервер nginx, а в качестве back-end выступал все тот же Apache.

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

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

Для установки nginx в этих операционных системах вам необходимо подключить дополнительный репозиторий пакетов EPEL и установить nginx:

yum install nginx

Установка mod_rpaf

Модуль mod_rpaf для Apache необходим для работы связки с nginx. Необходимость в данном модуле возникает по следующей причине: запросы к Apache приходят с IP-адреса, на котором работает nginx (в простейшем случае это тот же самый адрес, на котором работает Apache), соответственно, в журнальных файлах Apache будет фигурировать только IP-адрес nginx-сервера, что не очень хорошо. Также без использования данного модуля начнутся проблемы со скриптами, в которых используется IP-адрес посетителя и перестанет правильно работать механизм ограничения доступа по IP-адресам с помощью .htaccess.

Настройка nginx

Ниже приведен конфигурационный файл nginx для работы в качестве front-end сервера. Подразумевается, что nginx будет работать на всех интерфейсах на 80 порту, а Apache будет работать на интерфейсе 127.0.0.1 и порту 8080. Сохраните данный конфигурационный файл в каталоге /etc/nginx/ с именем nginx.conf.

user nginx; workerprocesses 10; errorlog /var/log/nginx/error.log debug; pid /var/run/nginx.pid; events { worker_connections 20000; } http { include /etc/nginx/mime.types; defaulttype application/octet-stream; logformat main '$remoteaddr - $remoteuser [$timelocal] $status ' '«$request» $bodybytessent «$httpreferer» ' '«$httpuseragent» «httpxforwardedfor»'; accesslog /var/log/nginx/access.log main; sendfile on; tcpnopush on; tcpnodelay on; keepalivetimeout 30; sendtimeout 900; servertokens off; server { listen 80; servername ; servernameinredirect off; accesslog /var/log/nginx/host.access.log main; location / { proxypass http://127.0.0.1:8080/; proxyredirect off; proxysetheader Host $host; proxysetheader X-Real-IP $remoteaddr; proxysetheader X-Forwarded-For $proxyaddxforwardedfor; clientmaxbodysize 10m; clientbodybuffersize 128k; proxyconnecttimeout 90; proxysendtimeout 90; proxyreadtimeout 90; proxybuffersize 4k; proxybuffers 4 32k; proxybusybufferssize 64k; proxytempfilewritesize 10m; } } }

nginx_как_front-end_к_apache.1357828918.txt.gz · Последнее изменение: 2013/01/10 18:41 (внешнее изменение)

DokuWiki Appliance - Powered by TurnKey Linux