Nginx (front-end) + Apache (back-end)

Приветствую Вас, уважаемые читатели. Сегодня тема статьи: "Nginx (front-end) + Apache (back-end)". Есть два наиболее популярных веб-сервера – это Nginx и Apache. Лучшим выбором в основном считается использование Nginx с дополнительными компонентами для обработки динамического содержимого. Но бывают ситуации, когда без использования Apache не обойтись. В таком случае, можно использовать связку двух веб-серверов - Nginx в качестве кэширующего прокси-сервера для Apache.
Nginx – имеет хорошую производительность, и отлично работает со статическим содержимым, но не может обрабатывать динамическое содержимое.
Apache – может обрабатывать и динамическое и статическое содержимое, но имеет плохую производительность.
В прошлой статье, мы произвели установку и настройку LAMP с Apache. Сегодня будем модернизировать конфигурацию из прошлой статьи.
Установка Nginx.
- Для начала подключаем репозиторий Nginx. В директории /etc/yum.repos.d/, создаём файл nginx.repo с таким содержанием:
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1
- Устанавливаем Nginx.
# yum install nginx
- Пока не будем запускать nginx, потому что на 80 порту у нас Apache.
- В прошлой статье, в корневой директории сайта, мы создавали для проверки файл index.html. Удалим его, и создадим другой файл, с выводом информации о php.
# echo '<?php phpinfo();' > /var/www/test.ru/site/index.php
- Открываем браузер, и заходим по адресу нашего сайта. Открывается страница с информацией о php.

Настройка Apache для работы в связке с Nginx
- Теперь нужно настроить Apache на работу на другом порту, можно использовать любой не занятый порт. Я буду использовать порт 8080.
- Нам нужен файл /etc/httpd/conf/httpd.conf.
Находим
Listen 80
Меняем на
Listen 127.0.0.1:8080

- Нам также нужно изменить конфигурационные файлы виртуальных хостов.
- Заходим в директорию /etc/httpd/conf.d/, и в файлах виртуальных хостов test.ru.conf и myadmin.test.ru.conf, которые мы создали в прошлой статье, производим необходимые изменения.
*:80
меняем на
*:8080

- Чтобы изменения вступили в силу, перезапускаем Apache.
# systemctl restart httpd
- Теперь можно запустить nginx. Запускаем его и добавляем в автозагрузку.
# systemctl start nginx
# systemctl enable nginx
Настройка Nginx для работы в связке с Apache
- Переходим к настройке nginx. Заходим в директорию /etc/nginx/conf.d, и для каждого из работающих сайтов создаём конфигурационный файл.
- Для сайта test.ru, это будет файл test.ru.conf, с таким содержанием:
server { listen 80; server_name test.ru www.test.ru; index index.php index.html index.htm; access_log /var/log/nginx/test.ru.access.log main; error_log /var/log/nginx/test.ru.error.log; location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff|woff2|swf|ttf|svg|html|txt)$ { root /var/www/test.ru/site; access_log off; expires 3d; } location / { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 120; proxy_send_timeout 120; proxy_read_timeout 180; proxy_buffering on; proxy_buffer_size 64k; proxy_buffers 8 64k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 10m; gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 5; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_min_length 256; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon; } location ~ /\. { deny all; } }

- Для веб-приложения phpmyadmin, это будет файл myadmin.test.ru.conf, с таким содержанием:
server { listen 80; server_name myadmin.test.ru www.myadmin.test.ru; index index.php index.html index.htm; access_log /var/log/nginx/myadmin.test.ru.access.log main; error_log /var/log/nginx/myadmin.test.ru.error.log; location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff|woff2|swf|ttf|svg|html|txt)$ { root /var/www/myadmin.test.ru/site; access_log off; expires 3d; } location / { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 120; proxy_send_timeout 120; proxy_read_timeout 180; proxy_buffering on; proxy_buffer_size 64k; proxy_buffers 8 64k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 10m; gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 5; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_min_length 256; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon; } location ~ /\. { deny all; } }

- Конфигурационные файлы состоят из нескольких секций, в частности добавлены полезные опции:
- Глобальные настройки.
- Кэширование статических объектов.
- Gzip-сжатие.
- Запрет доступа к файлам начинающимся с точки.
- После создания конфигурационных файлов, перезапускаем Nginx и Apache.
# systemctl restart nginx
# systemctl restart httpd
- На этом настройка связки Nginx и Apache завершена. Nginx работает в качестве кэширующего прокси-сервера для Apache.
Сегодня мы рассмотрели тему: "Nginx (front-end) + Apache (back-end)". Произвели установку и настройку связки Nginx и Apache. Смотрите также видео по теме.
Надеюсь статья была вам полезна. До встречи в новых статьях.
✍
С уважением, Андрей Бондаренко.
Видео на тему "Nginx (front-end) + Apache (back-end)":

WMZ-кошелёк = Z667041230317
«Linux»