NGINX как обратный прокси-сервер APACHE
Мы расскажем вам, как поставить Nginx и использовать его как прокси-сервер для Apache.
Веб-серверы Apache и Nginx пользуются большой популярностью из-за своей высокой производительности. У каждого сервиса свои козыри: Apache – мощность, а у Nginx – скорость. Но у серверов есть и свои недостатки. Nginx требует модуль PHP-FPM либо его аналог для обработки динамического контента. А Apache нуждается в большом количестве памяти на сервере. В нашей статье мы покажем, как можно пользоваться преимуществами обоих серверов. При этом Nginx будет стоять на фронтэнде, а Apache – на бэкенде.
Что же нам потребуется? Нужно иметь предварительно настроенный сервер на Ubuntu, а также доступ к sudo.
Мы начнем с установки и настройки Nginx, который нужен для обслуживания фронтэнд ресурса. Для этого наберите команду в консоли:
sudo apt-get install 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;
}
}
Данный блок кода нужен для:
Вышеуказанный набор правил нужен для настройки системы и перенаправления всех файлов, имеющих расширение .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.
Просто наберите в консоли:
sudo apt-get install apache2
Т.к. Nginx у нас еще не работает, то веб-сервер Apache активируется на 80 порте.
Приступаем к настройке 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
Выполнив без ошибок вышеуказанные действия, мы получим сервер Apache, который на бэкенде обрабатывает РНР и работающий на фронтенде Nginx. Набрав свое доменное имя в адресную строку браузера, вы увидите стандартную страницу сайта. Выполните простой скрипт для подтверждения того, что веб-сервер Apache нормально обрабатывает получаемую информацию. Создайте файл php.info посредством:
sudo nano /var/www/info.php
Внутри нужно добавить вот такие строки:
<?
phpinfo( );
?>
Сохраните изменения, после чего файл можно будет закрыть. Теперь в адресной строке браузера нужно набрать ваш_домен/info.php. На дисплее вы сможете увидеть информацию работе php. Там и будет указано о том, что Apache в данный момент занимается обработкой php-запросов. Если вы хотите узнать, какие порты открыты и что на них работает, наберите в консоли:
sudo netstat -plunt
Пара установленных серверов сможет прилично повысить эффективность работы вашего сайта.
Опубликовано: Июнь 1, 2017