Вход
Русский
USD
Цены в иностранной валюте приведены информационно

NGINX как обратный прокси-сервер APACHE

Мы расскажем вам, как поставить Nginx и использовать его как прокси-сервер для Apache.

Веб-серверы Apache и Nginx пользуются большой популярностью из-за своей высокой производительности. У каждого сервиса свои козыри: Apache – мощность, а у Nginx – скорость. Но у серверов есть и свои недостатки. Nginx требует модуль PHP-FPM либо его аналог для обработки динамического контента. А Apache нуждается в большом количестве памяти на сервере. В нашей статье мы покажем, как можно пользоваться преимуществами обоих серверов. При этом Nginx будет стоять на фронтэнде, а Apache – на бэкенде.

Что же нам потребуется? Нужно иметь предварительно настроенный сервер на Ubuntu, а также доступ к sudo.

1) Как поставить Nginx?

Мы начнем с установки и настройки Nginx, который нужен для обслуживания фронтэнд ресурса. Для этого наберите команду в консоли:

sudo apt-get install nginx

Когда пакет загрузится, присупайте к настройке виртуального хоста.

2) Настройка Nginx

Для этого нам нужно открыть файл конфигурации сервера с помощью:

sudo nano /etc/nginx/sites-available/example

Для настройки Nginx при обслуживании ресурса нам понадобится определенный код. Его легко спутать со стандартным. Вставьте в консоль:

server {
listen   80;
root /var/www/;
index index.php index.html index.htm;
server_name example.com;
location / {
try_files $uri $uri/ /index.php;
}
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 ~ /\.ht {
deny all;
}
}

Данный блок кода нужен для:

  • • Установка нужной root-папки;
  • • Добавление строки index расширения .php;
  • • Правило proxy_pass сообщает адрес прокси-сервера;
  • • Директива try_files будет обслуживать любую страницу, запрашиваемую пользователем. Если веб-сервер Nginx недоступен, файл будет передан на прокси;
  • • Блок location ~ /\.ht { нужен для запрета доступа к файлам .htaccess, в случае когда каталог document root веб-сервера Apache совпадает с root-каталогом Nginx.

Вышеуказанный набор правил нужен для настройки системы и перенаправления всех файлов, имеющих расширение .php на сервер Apache, если он будет использовать 8080 порт. Сначала нам нужно включить виртуальный хост посредством:

sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example

Теперь предстоит удалить стандартный блог server:

sudo rm /etc/nginx/sites-enabled/default

После этого мы можем переходить к инсталляции и настройке Apache.

3) Как инсталлировать Apache?

Просто наберите в консоли:

sudo apt-get install apache2

Т.к. Nginx у нас еще не работает, то веб-сервер Apache активируется на 80 порте.

4) Настройка Apache

Приступаем к настройке Apache для бэкенда на 8080 порте, ведь это правило указано в настройках сервера Nginx. С помощью кода в консоли откройте файл ports:

sudo nano /etc/apache2/ports.conf

Внутри него нужно найти строки и поменять значение в них с указанием подходящего порта. Это откроет нам доступ к Apache только (!) с локального хоста. Укажите:

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

После этого сохраните изменения и закройте файл. Теперь нужно открыть новый файл виртуального хоста. Для этого предстоит скопировать участок кода из файла Apache по умолчанию:

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/example
sudo nano /etc/apache2/sites-available/example

Нам нужно внести изменения в адрес порта. Нужная нам строка после правок выглядит вот так:

Нам нужно проверить, корректно ли задан Document Root. Сохраните изменения и закройте файл. После этого можно включать виртуальный хост с помощью:

sudo a2ensite example

Теперь предстоит поставить PHP для Apache, перед началом тестирования работы сервисов. Наберите в консоли:

sudo apt-get install php5

Для обновления настроек потребуется перезапуск двух вер-серверов:

sudo service apache2 restart
sudo service nginx restart

5) Тестирование работы

Выполнив без ошибок вышеуказанные действия, мы получим сервер Apache, который на бэкенде обрабатывает РНР и работающий на фронтенде Nginx. Набрав свое доменное имя в адресную строку браузера, вы увидите стандартную страницу сайта. Выполните простой скрипт для подтверждения того, что веб-сервер Apache нормально обрабатывает получаемую информацию. Создайте файл php.info посредством:

sudo nano /var/www/info.php

Внутри нужно добавить вот такие строки:

<?
phpinfo( );
?>

Сохраните изменения, после чего файл можно будет закрыть. Теперь в адресной строке браузера нужно набрать ваш_домен/info.php. На дисплее вы сможете увидеть информацию работе php. Там и будет указано о том, что Apache в данный момент занимается обработкой php-запросов. Если вы хотите узнать, какие порты открыты и что на них работает, наберите в консоли:

sudo netstat -plunt

Пара установленных серверов сможет прилично повысить эффективность работы вашего сайта.

Опубликовано: Июнь 1, 2017