Настройка Nginx как фронтенд Apache

05.10.2011 от admin 15

В предыдущей статье я описывал как настроить свой хостинг с панелью Ispconfig3, сегодня я расскажу как настроить Nginx, который будет обрабатывать статику вместо Apache.

Внимательный читатель спрость, зачем нам это нужно? Ответ прост, Nginx потребляет меньше ресурсов и работает быстрее Apache.

Что нужно.

  • Сервер на ubuntu/debian/etc
  • Доступ по ssh
  • 10 минут времени

Настройка Apache

Открываем порты Apache:

 nano /etc/apache2/ports.conf 

И ищем строки:

NameVirtualHost *:80
Listen 80

Меням на порт 82:

NameVirtualHost *:82
Listen 82

Так же меняем порт для корневого хоста:

nano /etc/apache2/sites-available/default

VirtualHost *:82>
ServerAdmin webmaster@localhost</pre>
DocumentRoot /var/www

Перезапускаем Apache:

/etc/init.d/apache2 restart

И проверяем на каком порте у нас apache:

netstat -tunap | grep apache2

Должны увидить, что-то вроде этого:

tcp 0 0 0.0.0.0:82 0.0.0.0:* LISTEN 5851/apache2

Если все правельно, то перейдем к IspConfig, подправим шаблоны панели для apache, но на всякий случай сохраним старые конфиги:

cd /usr/local/ispconfig/server/
cp conf/apache_ispconfig.conf.master conf-custom/
cp conf/vhost.conf.master conf-custom/

И отредактируем файлы:

nano /usr/local/ispconfig/server/conf-custom/apache_ispconfig.conf.master

В конце файла:

<tmpl_loop name="ip_adresses">
NameVirtualHost {tmpl_var name="ip_address"}:80
NameVirtualHost {tmpl_var name="ip_address"}:443
</tmpl_loop>

В строке заменяем на 82:

NameVirtualHost {tmpl_var name="ip_address"}:82

Открываем второй файл файл:

nano /usr/local/ispconfig/server/conf-custom/vhost.conf.master

Почти в самом начале файла ищем строку:

<VirtualHost <tmpl_var name='ip_address'>:80>

И меняем на:

<VirtualHost <tmpl_var name='ip_address'>:82>

Теперь установим модуль для apache — ibapache2-mod-rpaf:

apt-get install libapache2-mod-rpaf

И редактируем конфиг:

nano /etc/apache2/apache2.conf

Где-то , например, в конце добавляем:

RPAFsethostname On
RPAFproxy_ips 127.0.0.1

На этом с apache закончили и переходим к Nginx
Установка и настройка Nginx.

Устанавливаем Nginx:

apt-get install nginx

И после установки удаляем стандартный virtualhost:

rm /etc/nginx/sites-available/default

Открываем наш хост:

nano /etc/nginx/sites-available/default

Вписываем слудующие:

server {
listen 80 default;
server_name _;
server_name_in_redirect off;
default_type text/html;
#### Non WWW host goes to $sup variable ####
set $sup $host;
if ($host ~* ^(www.)(.+)) { #if WWW?
set $sup $2; # cut WWW and write it into $sup
}
access_log /var/log/ispconfig/httpd/$host/access.log;
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|html|htm|mp3)$ {
root /var/www/$sup/web;
access_log off;
expires 30d;
}
location / {
root /var/www/$sup/web;
index index.html index.htm index.php;
access_log off;
#proxy_pass http://$host:82;
proxy_pass http://127.0.0.1:82;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

Перезапускаем наши веб сервера:

service apache2 restart
service nginx restart

На этом настройка завершена, теперь можно наслаждаться возросшей скоростью =)

Статья была написано по материалу блога Andrey Kozhokaru и сайта мини-сервер.