Конфигурирование Nginx как proxy server для Apache2+Mysql на разных серверах

Автор: | 29.03.2011

Конфигурирование Nginx как proxy server для Apache2 на разных серверах….

Дана задача:

Есть 3  сервера (2х-Debian Lenny 5& CentOS 5.5) на Debian1 нужно поднять Apache2+php5+webmin+ProFTPD, на Debian2 MySql , на CentOS, Nginx и подружить их, то есть Nginx должен выступать как прокси сервер для Apache2.

Начнём с первого сервера Debian1.

1. Нужно попасть в консоль сервера.

— В  данном примере расмотрим доступ по SSH.

Подключится по SSH можно с помощью  утилиты Putty(она есть как для Windows, так и для Linux) либо с помощью Linux консоли, на машине с помощью которой я конфигурировал сервера стоит Ubuntu поэтому я использую обычную консоль.

Заходим в консоль и набираем:

$ sudo -s #Для получения root прав.

система спросит пароль вводим свой пользовательский пароль жмём Enter,  далее вводим команду:

$ ssh 10.0.0.1 нажимаем Enter система спросит пароль от учётной записи на сервере вводим пароль также жмём Enter, если всё сделано правильно, значит мы попадаем в серверную консоль.

Для начала вводим команду:

$ aptitude update # Обновляем кеш репозиториев

Список репозиториев на ходится по адресу /etc/apt/sources.list для просмотра или редактирования этого файла вводим в консоли:

$ nano /etc/apt/sources.list

И видим подобный набор репозиториев:

deb https://ftp.nl.debian.org/debian/ lenny main

deb-src https://ftp.nl.debian.org/debian/ lenny main

deb https://security.debian.org/ lenny/updates main contrib

deb-src https://security.debian.org/ lenny/updates main contrib

Следующее:

$ aptitude upgrade # Обновляем установленные пакеты.

Далее устанавливаем утилиты которые нам пригодятся в администрировании.

Советую с установки MC (Midnight Commander), набираем команду:

$ aptitude install mc # Начался процесс установки

По завершении установки проверяем работоспособность установленного пакета(по желанию), для запуска (Midnight Commander) набираем:

$ mc -a

Утилита nmap Сканер сетевых портов. Эта утилита сканирует сервер в поисках открытых портов и сервисов. Это очень важный инструмент, используемый для поиска уязвимостей при настройке системы.

$ apt-get install nmap

Она Вам пригодится в дальнейшем.

Ну вот первый этап конфигурации сервера пройден, приступим к установке необходимых для работы нашего Web сервера.

Установим Apache2:

$ apt-get install apache2

Конфигурационный файл Apache2 здесь — /etc/apache2/apache2.conf для просмотра набираем:

$ nano /etc/apache2/apache2.conf

Для проверки работоспособности нашего Web сервера набираем в адресной строке браузера https://ip_вашего_сервера на примере это выглядит так:

https://10.0.0.1

Если все действия верные, в ответ получим:

[nggallery id=1]

Если в результате получилась ошибка набираем в консоли:

$ /etc/init.d/apache2 restart

И пробуем заново, если и так не получилось значит что-то упустили, читаем снова.

Установим php5:

Для проверки какие пакеты есть в репозитории набираем команду:

$ aptitude search php5 # Вы увидите полный список доступных пакетов.

Теперь установка нужных нам пакетов:

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

После установки перезагружаем apache2 выполнив в консоли команду:

$ /etc/init.d/apache2 restart

Проверяем работу php5:

Создаём в директории /var/www файл и называем его info.php для этого используем команду:

$ nano /var/www/info.php

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

<?php phpinfo(); ?>

Сохраняем и закрываем редактор. Далее вводим в адресной строке браузера:

https://my_ip/info.php

В ответ должны получить такое:

[nggallery id=2]

Теперь приступим к установке Webmin:

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

$ cd /tmp

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

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

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

$ dpkg -i webmin_1.550_all.deb

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

$
apt-get install -f

После установки проверяем работоспособность, для этого набираем в адресной строке браузера:

https://my_ip:10000

Ответ должен быть следующий:

[nggallery id=3]

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

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

$
apt-get install proftpd

Создаём пользователя для подключения по FTP.

$adduser someuser # Создаём пользователя
$passwd someuser # Назначаем ему пароль
$usermod -G www-data someuser # Этой командой мы добавляем нашего пользователя в группу "www-data", чтобы у него были права на чтение и запись дириктории "/var/www/"

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

$ nano /etc/proftpd/proftpd.conf

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

 

<Anonymous /var/www> # Корневая дириктория сервера.
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>

 

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

На сервере установлен CentOS 5.5 т.к в стандартных репозиториях nginx нет, подключаем сторонние репозитории:

CentOS x64

$rpm -ihv https://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm

CentOS x32

$rpm -ihv https://centos.alt.ru/repository/centos/5/i386/centalt-release-5-3.noarch.rpm

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

Открываем следующий файл:

$nano /etc/yum.repos.d/centalt.repo

Ищем в нём строчку enabled=1 и меняем 1 на 0 в итоге должно получится так enabled=0.

Устанавливаем Nginx набрав в консоле следующее:

$yum install nginx

После установки запускаем его:

$/etc/init.d/nginx start

Если запуск прошол без ошибок значит всё сделано верно.

Продолжаем настраивать

Конфигурации Nginx находятся сдесь /etc/nginx/nginx.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/ создаём папку vhosts
должно получится так

/etc/nginx/conf.d/vhosts/

открываем конфиг virtual.conf:

 nano /etc/nginx/conf.d/virtual.conf 

И проверяем присутствует ли в конце файла такая строка:
Если нет вписываем и сохраняем.

 include /etc/nginx/conf.d/vhosts/*.conf; 

Создаем конфиг виртуального хоста.

nano /etc/nginx/conf.d/vhosts/site_name.conf

Пример без SSL:

 upstream site_com{ 
server ip_webserv:80; 
} 
server { 
listen listen_ip:80; 
server_name site.com; 
rewrite ^(.*) https://www.site.com$1 permanent; 
} 
server { listen listen_ip:80; 
server_name www.site.com; 
access_log /var/log/nginx/site.com.log; 
location / { proxy_pass https://site_com; 
include /etc/nginx/proxy.conf; 
} 
} 

Пример c SSL:

 upstream site_com{ 
server ip_webserv:80; 
} 
server { 
listen listen_ip:80; 
server_name site.com; 
rewrite ^(.*) https://www.site.com$1 permanent; 
} 
server { 
listen listen_ip:80; 
server_name www.site.com; 
access_log /var/log/nginx/site.com.log; 
location / { 
proxy_pass https://site_com; 
include /etc/nginx/proxy.conf; 
 } 
} 
server { 
listen listen_ip:443; 
server_name www.site.com; 
access_log /var/log/nginx/site.com.log; 
ssl on; 
ssl_certificate /etc/nginx/ssl/www.site.com.crt; 
ssl_certificate_key /etc/nginx/ssl/www.site.com.key; 
location / { 
proxy_pass https://site_com; 
include /etc/nginx/proxy.conf; 
 } 
} 

Стантья дополняется…….