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

В стандартных репозиториях Debian находится устаревшая версия nginx.

Как установить новую версию смотрим тут.

С установкой Nginx покончено, далее устанавливаем LAMP

apt-get install apache2
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.710_all.deb

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

dpkg -i webmin_1.710_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/conf.d/» создаем конфиг виртуального хоста.

nano /etc/nginx/conf.d/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/путь_к_Вашему_сайту;
 }
}

Настройка 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

Успехов.