Настройка Nginx как front-end к Apache2 на одном сервере, Debian 6.0 «Squeeze»

Автор: | 19.03.2012

Настройка Nginx как front-end к Apache2 на одном сервере, Debian 6.0 «Squeeze»

Начнём с добавления стороннего репозитория для Debian 6, т.к. в стандартом репозитории nginx не новый.

Открываем в редакторе «/etc/apt/sources.list»

nano /etc/apt/sources.list

В конец файла добавляем две строчки:

deb https://packages.dotdeb.org squeeze all
deb-src https://packages.dotdeb.org squeeze all

Добавляем ключ репозитория, в консоле выполняем:

wget https://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | sudo apt-key add -

Обновляем кеш пакетов:

sudo apt-get update

И устанавливаем Nginx

sudo apt-get install nginx

Если LAMP не установлен. устанавливаем его:

Установим Apache2:

apt-get install apache2

Установим php5:

apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-gd php5-imagick php5-mcrypt php5-memcache php5-mhash php5-mysql php5-pspell php5-snmp php5-sqlite php5-xmlrpc php5-xsl

Установим Mysql-Server:

apt-get install mysql-server mysql-client

Установим phpmyadmin:

apt-get install phpmyadmin

Для удобства добавления виртуальных хостов в apache2 по желанию можно установить Webmin:

Переходим в папку tmp для этого набираем:

cd /tmp

Далее скачиваем установочный пакет:

wget https://prdownloads.sourceforge.net/webadmin/webmin_1.660_all.deb

После того как процесс скачивания пакета завершился нам нужно его установить, для установки набираем:

dpkg -i webmin_1.660_all.deb

Если dpkg ругнулся на зависимости набираем следующее:

apt-get install -f

Теперь приступим к установке FTP сервера.

Набираем в консоле:

apt-get install proftpd

Создаем нового виртуального ftp-пользователя с логином someuser, идентификатором 33, группой 33 и домашним каталогом /var/www/mysite.com

ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=someuser --uid=33 --gid=33 --home=/var/www/mysite.com --shell=/bin/false

После выполнения команды система попросит ввести дважды пароль пользователя.

В итоге, у нас появится файл /etc/proftpd/ftp.passwd с записью о пользователе.

Теперь нам небходимо добавить в конфиг нужные параметры для полноценной работы FTP  сервера. Конфиг находится сдесь «/etc/proftpd/proftpd.conf» открываем его:

nano /etc/proftpd/proftpd.conf

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

RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd

Идём в самый конец файла и добавляем такие строчки:

<Anonymous /var/www/mysite.com> # дириктория сайта. 
User someuser # Пользователь которого мы добавили
Group www-data
AnonRequirePassword on
MaxClients 10 "The server is full, hosting %m users"
DisplayLogin welcome.msg
<Limit LOGIN>
Allow from all
Deny from all
</Limit>
AllowOverwrite on
<Limit LIST NLST  STOR STOU  APPE  RETR  RNFR RNTO  DELE  MKD XMKD SITE_MKDIR  RMD XRMD SITE_RMDIR  SITE  SITE_CHMOD  SITE_CHGRP  MTDM  PWD XPWD  SIZE  STAT  CWD XCWD  CDUP XCUP >
 AllowAll
</Limit>
<Limit NOTHING >
 DenyAll
</Limit>
</Anonymous>

И перезагружаем FTP сервер

/etc/init.d./proftpd restart

С установкой всех компонентов сервера мы закончили, приступим к настройкам.

Настраиваем Nginx:

Создаем конфигурационный файл proxy.conf

nano /etc/nginx/proxy.conf

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

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 1500;
proxy_send_timeout 1500;
proxy_read_timeout 1500;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_ignore_client_abort on;

Сохраняем, закрываем.

В каталоге «/etc/nginx/sites-available/» создаем конфиг виртуального хоста.

nano /etc/nginx/sites-available/site.com.conf

Пример виртуального хоста:

upstream site_com {
 # Адрес back-end'a
 server 127.0.0.1:81;
}
server {
 listen 80;
 server_name site.com www.site.com;
 access_log /var/log/nginx/site.com_access.log;
 error_log /var/log/nginx/site.com_error.log;
# Перенаправление на back-end
 location / {
 proxy_pass https://site_com;
 include /etc/nginx/proxy.conf;
 }
# Статическиое наполнение отдает сам nginx
 # back-end этим заниматься не должен
 location ~* .(jpg|jpeg|gif|png|ico|css|bmp|swf|js)$ {
 root /var/www/путь_к_Вашему_сайту;
 }
}

Для того, чтобы Nginx прочитал конфиг создаём символическую ссылку

ln -s /etc/nginx/sites-available/site.com.conf /etc/nginx/sites-enabled/

Настройка Apache2:

Меняем порт по умолчанию для apache2, открываем

nano /etc/apache2/ports.conf

И меняем значения «NameVirtualHost» и «Listen» с 80 порта на 81, должно получится так:

NameVirtualHost *:81
Listen 81

Сохраняем, закрываем.

Пример Виртуал хоста для apache2

<VirtualHost *:81>
DocumentRoot /var/www/путь_к_Вашему_сайту
ServerName your_site.com
ServerAlias www.your_site.com
<Directory "/var/www/путь_к_Вашему_сайту">
allow from all
Options -Indexes
</Directory>
</VirtualHost>

Перезагружаем оба веб сервера

/etc/init.d/apache2 restart && /etc/init.d/nginx restart

Успехов.