среда, 8 февраля 2012 г.

Настройка Nginx как фронтенд Apache d Ubuntu / Debian Linux

Для того чтобы снизить нагрузку на сервер, бывает полезно поставить nginx как front-end сервер который будет обрабатывать всю статику вместо 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
 
        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

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

1 комментарий:

  1. Хорошая статья. Вот еще материал по этой теме: http://plutov.by/post/nginx_static_apache_dynamic

    ОтветитьУдалить