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

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

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

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

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

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

Установим NTP.

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

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

Устанавливаем 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 сессий.

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


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

Ваш адрес email не будет опубликован.