Настройка Nginx в качестве обратного прокси-сервера для Apache
Apache и Nginx― это программное обеспечение с открытым исходным кодом, которое позволяет создавать веб-сервер. Nginx удобно использовать как почтовый сервер или обратный прокси-сервер (Nginx proxy). Он быстро обрабатывает данные, однако требует установки PHP-FPM. Апач хорошо совместим с большинством популярных CMS, но для работы требует много ресурсов и мощностей.
Нередко эти веб-серверы используют в связке. В статье ниже мы расскажем, как их настроить для совместной работы.
Обратите внимание:
- на сервере должна быть установлена только ОС Ubuntu 16.04,
- перед настройкой нужно подключиться к серверу по SSH.
Как установить и настроить 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().