Настройка 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
Успехов.