Настройка Nginx в качестве обратного прокси-сервера для Apache

Apache и Nginx― это программное обеспечение с открытым исходным кодом, которое позволяет создавать веб-сервер. Nginx удобно использовать как почтовый сервер или обратный прокси-сервер (Nginx proxy). Он быстро обрабатывает данные, однако требует установки PHP-FPM. Апач хорошо совместим с большинством популярных CMS, но для работы требует много ресурсов и мощностей. 

Нередко эти веб-серверы используют в связке. В статье ниже мы расскажем, как их настроить для совместной работы. 

Обратите внимание

Как установить и настроить 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 — index.php,
  • обслуживание страниц с помощью try_files, либо переадресацию на прокси,
  • proxy_pass в качестве адреса для 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 и настроили проксирование. Теперь займитесь настройкой Апач.

Как настроить 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. Откройте файл через редактор командой:

vim /etc/apache2/sites-available/example-apache.conf

5. Добавьте в файл: 

<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>

Затем сохраните изменения и выйдите из редактора. 

6. Запустите созданный виртуальный хост. После этого запустите Apache командой:

a2ensite example-apache.conf && service apache2 start

7. Создайте тестовую страницу командой: 

mkdir -p /var/www/ && echo '<?php phpinfo();' > /var/www/index.php

Готово. Теперь при обращении к сайту статические элементы (css, js-файлы и изображения) будет обрабатывать Nginx прокси, а Apache — динамический контент (php-скрипты). Чтобы использовать Nginx и Апач совместно, мы задали в настройках директиву “proxy_pass”. Если вы введёте в поисковую строку браузера «http://example.com/», отобразится вывод функции phpinfo(). 
 

Если вы не нашли ответ, спросите у нас!
Написать в поддержку