Настройка связки веб серверов Nginx + Apache

Дата: 19.06.2015 Автор Admin

В данной связке мы будем использовать 2 , будет обрабатывать статический контент, а динамический передавать Apache.

Обновим все пакеты:

Удалим кэш пакетов и ненужные пакеты:

Установим часовой пояс.

Установим NTP.

Установим Openssh сервер (если он не установлен).

Устанавливаем веб сервер .

Устанавливаем PHP.

Устанавливаем Mysql сервер.

Настраиваем безопасность Mysql.

Устанавливаем значения firewall.

Т.к. Apache будет нашим backend, настроим его на работу на localhost.

Открываем файл /etc/apache2/ports.conf

И редактируем директиву Listen, должно получиться так:

Сохраняем файл.

Создадим папку с сайтами (если не хотим использовать папку /var/www).

Далее откроем доступ к папке с сайтами, для этого редактируем файл /etc/apache2/apache2.conf и вносим в него следующие строки:

Сохраняем файл.

Включаем необходимые для работы модули Apache2.

Для корректного отображения ip адресов в логах установим модуль rpaf.

Включаем модуль.

Так же вы можете отключить лишние модули, например вот так отключается модуль status.

Перезапускаем Apache2.

Перейдем к настройке сайтов (виртуальных хостов).

Удаляем дефолтные сайты.

Создадим конфиг для нового сайта.

Ниже пример конфига сайта:

В данном примере:

Сайт работает на 80-м порту

Сайт доступен по DNS адресам newsite.test.com и newsite.test.local

Сайт расположен в директории – /hosting/newsite

Создаем каталог с новым сайтом.

Раздаем права на каталог с сайтами

Включаем сайт:

Перезагрузим конфиги apache2

Теперь добавьте DNS записи А с именем вашего сайта и ip адресом сервера.

В моем случае DNS имя newsite.test.com

Теперь установим Nginx, он будет frontend.

Удаляем дефолтные конфиги.

Создадим конфиг для сайта newsite

Приводим конфиг к виду:

 

В данном конфиге:

Директива listen ip_adress:80 указывает на каком порту и ip работает сайт

Директива root указывает корневую директорию сайта

Директива index указывает индексные файлы сайта

Директива server_name указывает dns имя сайта

Директива:

Указывает тип статических файлов

Директива expires указывает сколько дней хранить статический контент.

Директива:

Запрещает Nginx отдавать файлы начинающиеся с .ht

Директива:

Указывает что Nginx работает как обратный прокси и передает запросы на localhost.

Включаем сайт командой.

Перезапускаем Nginx.

Теперь в качестве примера установим CMS WordPress

Скачиваем последнюю версию WordPress.

Распаковываем.

Теперь создадим пользователя в БД Mysql для нового сайта.

Подключаемся к Mysql.

Создаем БД с именем wordpress.

Создаем пользователя wordpressuser.

Устанавливаем пароль созданному пользователю.

Устанавливаем права пользователю на администрирование созданной ранее БД.

Перезагружаем привилегии Mysql.

Выходим из консоли Mysql.

Теперь подготовим CMS WordPress для работы с БД.

Копируем конфиг WordPress.

Открываем файл /wordpress/wp-config.php и редактируем следующие поля:

Копируем сайт.

Назначаем права на каталог с сайтами веб серверу.

Теперь сайт доступен по адресу http://newsite.test.com

Теперь рассмотрим настройку ssl для нашего сайта.

Создадим папку для SSL сертификатов в каталоге Nginx.

Открываем файл /etc/apache2/ports.conf

Редактируем директиву Listen, должно получиться так:

Вместо

Пишем:

Открываем порт на firewall.

Теперь создадим SSL сертификат командой.

Теперь открываем конфиг сайта /etc/nginx/sites-available/newsite.conf

И приводим его к виду:

Сохраняем конфиг.

В данном конфиге добавилась вторая секция server и появились настройки ssl.

Директива rewrite описывает правило перенаправления с http на https

Директива listen 443 ssl; указывает что сайт работает по протоколу ssl на 443 порту

Директивы ssl_certificate и ssl_certificate_key указывают путь к файлам сертификата.

Теперь при переходе на http://newsite.test.com нас будет переадресовывать на https://newsite.test.com

В данной схеме Nginx берет на себя работу по созданию https сессий.

Удачной установки! =)


Добавить комментарий

Ваш e-mail не будет опубликован.