Конфигурирование 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_вашего_сервера на примере это выглядит так:
Если все действия верные, в ответ получим:
[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(); ?>
Сохраняем и закрываем редактор. Далее вводим в адресной строке браузера:
В ответ должны получить такое:
[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
После установки проверяем работоспособность, для этого набираем в адресной строке браузера:
Ответ должен быть следующий:
[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; } }
Стантья дополняется…….