Перейти к основному контенту

Как настроить Nginx в качестве обратного прокси для Apache

Веб-серверы Apache, Nginx можно использовать как по отдельности, так и в связке. Nginx обрабатывает данные быстро, но требует установки модуля PHP-FPM. Популярные CMS по традиции заточены под работу с Apache (из-за наличия .htaccess), но для его работы требуется больше ресурсов.

В статье покажем, как объединить их и использовать скорость Nginx для обработки фронтенда, а гибкость Apache — для бэкенда.

Перед настройкой убедитесь, что вы используете сервер, на котором установлена только ОС Ubuntu 16.04.

Подключитесь к серверу по SSH.


Сервис настройки NGINX

Не тратьте время на ручную подготовку конфигурационных файлов для NGINX. Выберите нужные параметры и скачайте уже сформированный конфигурационный файл.

1 этап. Установка и настройка Nginx

Рассмотрим, как установить и настроить Nginx для обработки фронтенда.

  1. 1.

    Введите команду:

    apt-get install nginx

    После загрузки пакета приступайте к настройке виртуального хоста.

  2. 2.

    Откройте файл конфигурации в редакторе с помощью команды:

    vim /etc/nginx/sites-available/example_nginx.conf
  3. 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. 4.
    Сохраните изменения и выйдите из редактора.
  5. 5.

    Включите созданный виртуальный хост командами:

    cd /etc/nginx/sites-enabled/
    
    ln -s ../sites-available/example_nginx.conf example_nginx.conf
    service nginx reload

Готово, мы установили Nginx и настроили проксирование, перейдем к настройке Апач.

Облачные серверы нового поколения

Виртуализация KVM, почасовая оплата, резервные копии, готовые шаблоны, 8 доступных ОС на выбор!

Выбрать облачный сервер

2 этап. Установка Apache и PHP

  1. 1.

    Введите команду:

    apt-get install apache2 libapache2-mod-php7.0
  2. 2.

    Откройте нужный файл в редакторе с помощью команды:

    vim /etc/apache2/ports.conf
  3. 3.

    Измените порт, к которому будут адресованы запросы Apache на:

    Listen 127.0.0.1:8080
  4. 4.
    Сохраните изменения и выйдите из редактора.
  5. 5.

    Откройте файл в редакторе с помощью команды:

    vim /etc/apache2/sites-available/example-apache.conf
  6. 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. 7.
    Сохраните изменения и выйдите из редактора.
  8. 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 шаг).

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 0 из 0