Алексей Алексеев Добро пожаловать в мой уютненький бложек

Front-end Nginx к Apache на Windows

В этой статье будет рассмотрена ситуация, когда в роли web-сервера выступает сервер с операционной системой Windows Server.

nginx [engine x] — это HTTP-сервер и почтовый прокси-сервер. Работает он очень быстро и предназначен в основном для раздачи статического контента, хотя может работать и самостоятельно. Скачать последнюю версию можно здесь, а почитать документацию можно здесь.

Небольшое замечание: Здесь представлена конфигурация сервера alexeev.pro, ваши настройки должны содержать соответствующие адреса.

1. Установка nginx

nginx/Windows работает с Win32 API (не эмуляция Cygwin). В качестве метода обработки соединений используется select, поэтому не стоит ожидать высокой производительности и масштабируемости: пока это бета-версия. На данный момент доступна практически вся функциональность, что и в nginx/Unix, за исключением XSLT-фильтра, фильтра изображений, модуля geoip и встроенного perl'а.

Распаковываем дистрибутив на диск C:, и только на диск C:, переходим в каталог nginx-1.0.0 и запускаем nginx:

cd c:\
unzip nginx-1.0.0.zip
cd nginx-1.0.0
start nginx

Если nginx не запустился, нужно смотреть причины в error_log. Если же error_log не создался, то об этом сообщается в Event Log.

nginx/Windows работает как обычное приложение (не сервис) и управляется следующим образом:

nginx -s stop    быстрое завершение
nginx -s quit    плавное завершение
nginx -s reload    изменение конфигурации, запуск новых рабочих процессов с новой конфигурацией, плавное завершение старых рабочих процессов
nginx -s reopen    переоткрытие лог-файлов

Небольшое замечание: Для удобства рекомендую прописать путь к nginx в системной переменной path.

2. Конфигурирование nginx

Файл конфигурации nginx лежит в папке conf и называется nginx.conf. Открывается блокнотом. В общем виде настройки сводятся к переносу сервера apache на порт отличный от 80 и установке на его место nginx. В данном случае apache перенесен на 88 порт.

Вот содержимое файла с сервера alexeev.pro:

worker_processes  1;

error_log   logs/error.log;

events {
 worker_connections  1024;
}

http {
 include       mime.types;
 default_type  application/octet-stream;

 sendfile        on;
 keepalive_timeout  65;

 # Директива определяет параметры сервера apache.
 upstream backend {
 server 127.0.0.1:88;
 }

 # Директива задаёт имя и параметры сервера.
 server {
 listen       80;
 server_name  alexeev.pro www.alexeev.pro;

 # Передаем динамику серверу apache, статику оставляем серверу nginx.
 location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|pdf|txt|tar|js)$ {
 root c:/Apache2.2/htdocs;
 }

 # Запрещаем обращение к .ht
 location ~ /\.ht {
 deny  all;
 }

 # Передача запроса серверу apache.
 location / {
 # Адрес сервера apache
 proxy_pass http://backend/;
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $remote_addr;
 proxy_connect_timeout 120;
 proxy_send_timeout    120;
 proxy_read_timeout    180;
 client_max_body_size       10m;
 client_body_buffer_size    128k;
 }

 # redirect server error pages to the static page /50x.html
 #
 error_page   500 502 503 504  /50x.html;
 location = c:/nginx/html/50x.html {
 root   html;
 }

}

3. Конфигурирование Apache

Конфигурирование apache заключается в изменении порта на 88 в файле httpd.conf:

здесь:

Listen 88

и здесь:

ServerName www.alexeev.pro:88

а также в файле .htaccess, если у вас несколько виртуальных хостов.

Теперь все должно работать, но у некоторых возникают проблемы, тогда без модуля mod_rpaf не обойтись, скачать можно здесь. Распаковываем архив и помещаем файл mod_rpaf в папку C:\Apache2.2\modules. В файле httpd.conf после блока подключения модулей пишем:

LoadModule rpaf_module modules/mod_rpaf.so
RPAFenable On
RPAFsethostname On
RPAFheader X-Forwarded-For
RPAFproxy_ips 172.16.1.34 127.0.0.1

Вместо 172.16.1.34 должен стоять либо локальный адрес вашего сервера, либо внешний. На сервере alexeev.pro данный модуль не подключен, все работает правильно без него! Если nginx и apache установлены на одном сервере, как на сервере alexeev.pro, то проблем не возникнет, данная проблема возникает когда nginx и apache находятся на разных машинах.

Настройка закончена, теперь осталось только запустить apache и nginx и наблюдать возросшую скорость!

Комментарии (2) Пинги (0)
  1. Вместо 172.16.1.34 должен стоять либо локальный адрес вашего сервера, либо внешний. На сервере alexeev.pro данный модуль не подключен, все работает правильно без него! Если nginx и apache установлены на одном сервере, как на сервере alexeev.pro

    бред, а не че что пхпшка присваивает всем юзерам ип 127.0.0.1 ?


Оставить комментарий

Trackbacks are disabled.