Как настроить Nginx в качестве обратного прокси для Apache
Веб-серверы Apache, Nginx можно использовать как по отдельности, так и в связке. Nginx обрабатывает данные быстро, но требует установки модуля PHP-FPM. Популярные CMS по традиции заточены под работу с Apache (из-за наличия .htaccess), но для его работы требуется больше ресурсов.
В статье покажем, как объединить их и использовать скорость Nginx для обработки фронтенда, а гибкость Apache — для бэкенда.
Перед настройкой убедитесь, что вы используете сервер, на котором установлена только ОС Ubuntu 16.04.
Подключитесь к серверу по SSH.
Сервис настройки NGINX
Не тратьте время на ручную подготовку конфигурационных файлов для NGINX. Выберите нужные параметры и скачайте уже сформированный конфигурационный файл.
1 этап. Установка и настройка Nginx
Рассмотрим, как установить и настроить Nginx для обработки фронтенда.
-
1.
Введите команду:
apt-get install nginx
После загрузки пакета приступайте к настройке виртуального хоста.
-
2.
Откройте файл конфигурации в редакторе с помощью команды:
vim /etc/nginx/sites-available/example_nginx.conf
-
3.
Скопируйте правила ниже и вставьте их в редакторе:
server { listen 80; root /var/www/; index index.php; server_name example.com; location / { try_files $uri $uri/ /index.php$args; } location ~ \.php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; } location ~ /\. { deny all; } }
Таким образом:
- в качестве root установлен правильный веб-каталог;
- index.php был добавлен в качестве index;
- try_files пытается обслуживать любую страницу, которую запрашивает посетитель. Если Nginx не может, файл передается на прокси;
- proxy_pass перед Nginx адрес для proxy;
- последний блок location запрещает доступ к файлам к скрытым файлам.
Эти правила нужны для настройки системы и перенаправления всех файлов с расширением .php на сервер Apache, если он будет использовать порт 8080.
-
4.
Сохраните изменения и выйдите из редактора.
-
5.
Включите созданный виртуальный хост командами:
cd /etc/nginx/sites-enabled/ ln -s ../sites-available/example_nginx.conf example_nginx.conf service nginx reload
Готово, мы установили Nginx и настроили проксирование, перейдем к настройке Апач.
2 этап. Установка Apache и PHP
-
1.
Введите команду:
apt-get install apache2 libapache2-mod-php7.0
-
2.
Откройте нужный файл в редакторе с помощью команды:
vim /etc/apache2/ports.conf
-
3.
Измените порт, к которому будут адресованы запросы Apache на:
Listen 127.0.0.1:8080
-
4.
Сохраните изменения и выйдите из редактора.
-
5.
Откройте файл в редакторе с помощью команды:
vim /etc/apache2/sites-available/example-apache.conf
-
6.
Добавьте в него содержимое:
<VirtualHost 127.0.0.1:8080> DocumentRoot /var/www/ ServerName example.com ErrorLog /var/log/apache2/example_error.log CustomLog /var/log/apache2/example_access.log common <Directory /var/www/> Options FollowSymLinks AllowOverride All #Следующие 2 строки не будут работать в apache >= 2.4, необходимо использовать директиву Require all granted #Order allow,deny #Allow from all Require all granted </Directory> </VirtualHost>
-
7.
Сохраните изменения и выйдите из редактора.
-
8.
Включите созданный виртуальный хост и запустите Apache с помощью команды:
a2ensite example-apache.conf && service apache2 start
Почти готово! Осталось создать тестовую страницу командой:
mkdir -p /var/www/ && echo '<?php phpinfo();' > /var/www/index.php
Теперь при обращении к сайту статические элементы (css, js-файлы и изображения) будет обрабатывать Nginx, а динамический контент (php-скрипты) — Apache. Чтобы использовать их совместно, мы задали в настройках Nginx директиву «proxy_pass».
Если после этого вы откроете в адресной строке браузера URL http://example.com/, будет отображаться вывод функции phpinfo() (см.9 шаг).
помогла
Нужна помощь?
Напишите в службу поддержки!