Вернуть старое меню
Бесплатно, 24/7 8 (800) 775-97-42
Country flag RU
Country flag EN
Country flag DE
₽ RUB
$ USD
€ EUR
Выбрать VPS
Маркетплейс
О нас
Сообщество
Поддержка
Баланс:
Бонусы:
Войти
Выйти
Зарегистрироваться
ГОТОВЫЕ ТАРИФЫ
Ref icon
VPS Старт От 139 рублей/мес
Ref icon
VPS Мощные Мощные серверы по выгодной цене
Ref icon
VPS Windows Удобные конфигурации для работы с ОС Windows
Ref icon
VPS Быстрые NVMe Максимальная скорость с промышленными NVMe дисками
Ref icon
VPS Plesk Настройте сервер под себя в несколько кликов
Ref icon
VPS с 1C для бухгалтеров Оптимизированные под 1C серверы
Ref icon
VPS для трейдинга Установите торговые терминалы за 1 клик
Ref icon
VPS для геймеров Мощное железо для мощных рейдов
Ref icon
VPS для бизнеса Настроить любой параметр сервера
Ref icon
Посмотреть все тарифы
Card icon Своя конфигурация
Удобный конфигуратор позволит вам настроить любой параметр сервера, а мы предложим за него лучшую цену.
Собрать
Card icon Бесплатный тест на 3 дня
Только для новых пользователей. Возьмите на тест любой сервер до 3000 рублей, проверьте приложения и программы, установив их на VPS.
Попробовать
АККАУНТ Мои серверы Домены Заказать Настройки Партнеру
КЛИЕНТАМ
О компании Входим в топ-15 IAAS в России
Дата-центры 17 ЦОД уровня Tier III в 7 странах
Аттестация по ФСТЭК Поможем с гос. лицензированием
Бонусная программа Накопительная система лояльности
Card icon Пинг до дата-центров
Измерьте ping от вас до всех наших дата-центров. Мы подберем тот, который подходит для вас идеально.
Измерить
Card icon Бесплатный тест на 3 дня
Только для новых пользователей. Возьмите на тест любой сервер до 3000 рублей, проверьте приложения и программы, установив их на VPS.
Попробовать
АККАУНТ Мои серверы Домены Заказать Настройки Партнеру
КЛИЕНТАМ
Справочник Пошаговые инструкции, как настроить VPS
FAQ Частые вопросы о настройке VPS и сервисе
Новости и события Новости сервиса, информация о событиях и спецпроектах компании
Card icon Соцсети
Наш блог на Хабре, выступления, новости компании.
Присоединиться
Card icon Бесплатный тест на 3 дня
Только для новых пользователей. Возьмите на тест любой сервер до 3000 рублей, проверьте приложения и программы, установив их на VPS.
Попробовать
АККАУНТ Мои серверы Домены Заказать Настройки Партнеру
Бесплатно, 24/7 8 (800) 775-97-42
Mobile menu button
Выбрать VPS
Mobile card icon
Своя конфигурация Удобный конфигуратор позволит вам настроить любой параметр сервера, а мы предложим за него лучшую цену.
Собрать
Ref icon
VPS Старт От 139 рублей/мес
Ref icon
VPS Мощные Мощные серверы по выгодной цене
Ref icon
VPS Windows Удобные конфигурации для работы с ОС Windows
Ref icon
VPS Быстрые NVMe Максимальная скорость с промышленными NVMe дисками
Ref icon
VPS Plesk Настройте сервер под себя в несколько кликов
Ref icon
VPS с 1C для бухгалтеров Оптимизированные под 1C серверы
Ref icon
VPS для трейдинга Установите торговые терминалы за 1 клик
Ref icon
VPS для геймеров Мощное железо для мощных рейдов
Ref icon
VPS для бизнеса Настроить любой параметр сервера
Ref icon
Посмотреть все тарифы
Ref icon
Бесплатный тест на 3 дня
Маркетплейс
О нас
Mobile card icon
Пинг до дата-центров Измерьте ping от вас до всех наших дата-центров. Мы подберем тот, который подходит для вас идеально.
Измерить
О компании Входим в топ-15 IAAS в России
Дата-центры 17 ЦОД уровня Tier III в 7 странах
Аттестация по ФСТЭК Накопительная система лояльности
Бонусная программа Накопительная система лояльности
Сообщество
Mobile card icon
Соцсети Наш блог на Хабре, выступления, новости компании.
Присоединиться
Справочник Пошаговые инструкции, как настроить VPS
FAQ Частые вопросы о настройке VPS и сервисе
Новости и события Новости сервиса, информация о событиях и спецпроектах компании
Поддержка
Country flag RU
Country flag EN
Country flag DE
₽ RUB
$ USD
€ EUR
Войти
Зарегистрироваться
Личный кабинет
Мои серверы
Домены
Баланс: Бонусы:
Заказать
Настройки
Партнеру
Выйти
Мои серверы
Домены
Заказать
Настройки
Партнеру
  • ВЫБРАТЬ VPS
  • ДАТА-ЦЕНТРЫ
  • СПРАВОЧНИК
  • ПОДДЕРЖКА
  • ВОЙТИ
RuVDS/Справочник/Настройка VPS Сервера/Как настроить Nginx в качестве веб-сервера и обратного прокси-сервера для Apache на одном сервере Ubuntu 20.04

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

9437 просмотров 4 2021-02-17 2021-02-24

Так как Nginx и Apache – практически самые используемые веб-серверы, и для хостинга на одном VPS, имеющем один IP-адрес, сайтов с различной структурой и различными требованиями, при настройке доступа к ним применяют разные номера портов для каждого из веб-серверов. Но использование номеров портов в ссылках на ресурсы – не удобно. Поэтому существует метод, позволяющий настроить Nginx в качестве веб-сервера и обратного прокси-сервера для Apache на одном сервере Ubuntu, имеющим один единственный IP-адрес.

На примере, описанном ниже, будет реализовано размещение четырёх доменов на одном VPS. Два домена будут работать под управлением Apache, а ещё два – под управлением Nginx. В случае, если будете настраивать на своём сервере такую схему, вам понадобится четыре реальных доменных имени, запись А (A-record) которых соответствует IP-адресу вашего VPS. Имена доменов в данном руководстве будут прописаны как ap1.site, ap2.site, ng1.site и ng2.site соответственно.

Настройка Apache

В начале, необходимо проинсталлировать сервис Apache и пакет PHP-FPM:

$ sudo apt update
$ sudo apt install apache2 php-fpm

Также, понадобится модуль PHP FastCGI. Поскольку он недоступен для установки из стандартного репозитория Ubuntu, устанавливать его придётся при помощи dpkg, предварительно загрузив дистрибутив из kernel.org:

$ wget https://mirrors.edge.kernel.org/ubuntu/pool/multiverse/liba/libapache-mod-fastcgi/libapache2-mod-fastcgi_2.4.7~0910052141-1.2_amd64.deb
$ sudo dpkg -i libapache2-mod-fastcgi_2.4.7~0910052141-1.2_amd64.deb

Для Apache будем использовать порт 8080. Здесь необходимо настроить так, чтобы Apache при помощи mod_fastcgi поддерживал PHP-FPM. Для чего переименуйте файл ports.conf и создайте новый, указав в нём порт 8080:

$ sudo mv /etc/apache2/ports.conf /etc/apache2/ports_old.conf
$ echo "Listen 8080" | sudo tee /etc/apache2/ports.conf

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

$ sudo a2dissite 000-default
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/001-default.conf
$ sudo nano /etc/apache2/sites-available/001-default.conf

В этом файле измените значение порта на 8080 в строке <VirtualHost>:

Файл конфигурации хоста

Закройте отредактированный файл с сохранением изменений, активируйте его и перезапустите сервис Apache:

$ sudo a2ensite 001-default
$ sudo systemctl reload apache2

И в завершение настройки, установите модуль net-tools и посмотрите, действительно ли на Apache доступен для прослушивания порт под номером 8080:

$ sudo apt install net-tools
$ sudo netstat -tlpn
Прослушивание портов пакетом net-tools

Настройка mod_fastcgi

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

Сначала необходимо будет отключить модуль mod_php:

$ sudo a2dismod php7.4
Отключение mod_php

После этого необходимо включить mod_action, и сохранив существующий файл FastCGI под другим именем, и создайте новый fastcgi.conf:

$ sudo a2enmod actions
$ cd /etc/apache2/mods-enabled
$ sudo mv fastcgi.conf fastcgi_old.conf
$ sudo nano fastcgi.conf

Следующий текст вставьте в созданный файл:

<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi
FastCgiIpcDir /var/lib/apache2/fastcgi
AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fcgi
Alias /php-fcgi /usr/lib/cgi-bin/php-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php-fcgi -socket /run/php/php7.4-fpm.sock -pass-header Authorization
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>

Закройте файл сохранив изменения и протестируйте Apache на корректность синтаксиса:

$ sudo apachectl -t

Нижеуказанную ошибку следует проигнорировать:

Ошибка. Её пока нужно пропустить.

Главное, что проверка сообщила, что Syntax OK. Это значит, что необходимо перезапустить сервис Apache:

$ sudo systemctl reload apache2

Далее, в папке /var/www/html нужно создать файл, который будет открывать страницу конфигурации PHP:

$ cd /var/www/html
$ sudo nano info.php

В этот файл необходимо вставить следующую фунцию:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

Теперь выполните настройку брандмауэра вашего VPS, которая позволит открыть доступ к нему по порту 8080:

$ sudo ufw allow 8080

А также, включите на UFW разрешение для Apache:

$ sudo ufw allow "Apache Full"

Проверьте статус, в котором находится ваш UFW:

$ sudo ufw status
Брандмауэр

И теперь, если вы откроете в браузере адрес http://X.X.X.X:8080/info.php, где X.X.X.X – это IP-адрес вашего VPS, то, скорее всего, увидите конфигурационную страницу PHP:

Страница phpinfo()

Обратите внимание, что на данной странице значения строк Server API и $_SERVER['SERVER_SOFTWARE'], как показано на скриншотах ниже, говорит о работоспособности модуля mod_fastcgi и использовании PHP-FPM веб-сервером Apache для работы с php-страницами. Что, собственно, и было целью данного раздела.

Страница конфигурации PHP
Конфигурация PHP

Виртуальные хосты Apache

Следующий этап в настройке сервера – создание виртуальных хостов для ap1.site и ap2.site. Как было описано выше, эти домены будут работать под управлением Apache. Для этих сайтов нужно создать соответствующие директории и файлы index.html:

$ sudo mkdir -v /var/www/ap1.site /var/www/ap2.site
$ echo "<title>ap1.site</title><h1>Apache Site - ap1.site</h1>" | sudo tee /var/www/ap1.site/index.html
$ echo "<title>ap2.site</title><h1>Apache Site - ap2.site</h1>" | sudo tee /var/www/ap2.site/index.html

Для каждого из ваших сайтов необходимо создать соответствующий файл info.php. Так можно будет проверить корректность конфигурации PHP на каждом из хостов:

$ echo "<?php phpinfo(); ?>" | sudo tee /var/www/ap1.site/info.php
$ echo "<?php phpinfo(); ?>" | sudo tee /var/www/ap2.site/info.php

Далее, создайте файлы для каждого из ваших виртуальных хостов при помощи, например, текстового редактора nano. Будьте внимательны: ИМЯ_ДОМЕНА – это доменное вашего сайта. Запустите команду сначала для первого вашего сайта (в примере это – ap1.site):

sudo nano /etc/apache2/sites-available/ИМЯ_ДОМЕНА.conf

В открытый файл вставьте следующий текст, заменяя ИМЯ_ДОМЕНА на имя вашего первого домена, который вы размещаете на Apache (в примере это – ap1.site):

<VirtualHost *:8080>
ServerName ИМЯ_ДОМЕНА
ServerAlias www.ИМЯ_ДОМЕНА
DocumentRoot /var/www/ИМЯ_ДОМЕНА
<Directory /var/www/ИМЯ_ДОМЕНА
AllowOverride All
</Directory>
</VirtualHost>

Теперь нужно закрыть файл с сохраненим внесённых изменений (при использовании nano нужно нажать Ctrl-X, Y и Enter). После этого, проделайте то же для второго вашего домена.

После чего, необходимо создать ссылки на созданные хосты:

$ sudo a2ensite ap1.site
$ sudo a2ensite ap2.site

Протестируйте Apache на корректность синтаксиса:

sudo apachectl -t

Если проверка сообщила, что Syntax OK, нужно будет перезапустить сервис:

sudo systemctl reload apache2

Чтобы протеститровать доступность ваших сайтов, наберите в браузере http://ap1.site:8080 для первого сайта и http://ap2.site:8080 для второго.

Если, всё идёт правильно, в первом случае вы увидите:

Первый сайт на Apache

А во втором:

Второй сайт на Apache

А, набрав в браузере http://ap1.site:8080/info.php и http://ap1.site:8080/info.php, вы увидите конфигурационную страницу PHP:

Страница конфигурации PHP

Настройка Nginx

В этом разделе вам нужно будет установить Nginx и настроить на нём виртуальные хосты для двух других ваших доменов.

Запустите инсталляцию Nginx:

$ sudo apt install nginx

Созданный каталог дефолтного виртуального хоста нужно удалить:

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

Для новых хостов сначала создайте соответствующие директории:

$ sudo mkdir -v /usr/share/nginx/ng1.site
$ sudo mkdir -v /usr/share/nginx/ng2.site

Теперь создайте для них файлы index.html и info.php:

$ echo "<title>ng1.site</title><h1>Nginx Site - ng1.site</h1>" | sudo tee /usr/share/nginx/ng1.site/index.html
$ echo "<title>ng2.site</title><h1>Nginx Site - ng2.site</h1>" | sudo tee /usr/share/nginx/ng2.site/index.html
$ echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/ng1.site/info.php
$ echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/ng2.site/info.php

Далее, для каждого из ваших Nginx-сайтов создайте файл хоста, заменяя ИМЯ_ДОМЕНА на имена ваших доменов, которые вы будете размещать на Nginx. В примере, это – ng1.site и ng2.site:

$ sudo nano /etc/nginx/sites-available/ИМЯ_ДОМЕНА

И вставьте в него следующий текст, также заменяя ИМЯ_ДОМЕНА на имена ваших доменов, как, например, ng1.site и ng2.site:

server {
listen 80 default_server;
root /usr/share/nginx/ИМЯ_ДОМЕНА;
index index.php index.html index.htm;
server_name ИМЯ_ДОМЕНА www.ИМЯ_ДОМЕНА;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
include snippets/fastcgi-php.conf;
}
}

Сохраняйте файлы перед закрытием. Проделайте процедуру для каждого из ваших доменов.

После этого, создайте ссылки для ваших виртуальных хостов:

$ sudo ln -s /etc/nginx/sites-available/ng1.site /etc/nginx/sites-enabled/ng1.site
$ sudo ln -s /etc/nginx/sites-available/ng2.site /etc/nginx/sites-enabled/ng2.site

Запустите тест корректности синтаксиса:

$ sudo nginx -t

Перезапустите сервис, если проверка синтаксиса ошибок не показала:

$ sudo systemctl reload nginx

И наконец, в браузере откройте по очереди ссылки на ваши сайты, работающие на Nginx: http://ng1.site/info.php и http://ng1.site/info.php:

Конфигурационная страница PHP

Обратите внимание на строку, содержащую значение $_SERVER[‘SERVER_SOFTWARE’]. Если строка выглядит так же, как на скриншоте ниже, значит, ваш сайт работает на Nginx, другими словами, запуск второй пары ваших сайтов завершился успешно:

Конфигурация PHP

Соответственно, каждый из ваших доменов должен теперь открываться по ссылке на него. Например, набрав в браузере http://ng1.site, вы должны получить следующую картинку:

Первый сайт, работающий на Nginx

Настройка Nginx для работы с Apache

Далее, необходимо создать дополнительный хост, работающий под Nginx, который будет перенаправлять запросы на веб-сервер Apache.

Для этого наберите:

$ sudo nano /etc/nginx/sites-available/apache

Вставьте в него следующий текст, где ap1.site и ap2.site – ваши домены, работающие на Apache, а X.X.X.X – IP-адрес вашего VPS:

server {
listen 80;
server_name ap1.site www.ap1.site ap2.site www.ap2.site;
location / {
proxy_pass http://X.X.X.X:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

Закройте файл с сохранение изменений.

Создайте ссылку командой:

$ sudo ln -s /etc/nginx/sites-available/apache /etc/nginx/sites-enabled/apache

Запустите тест сервиса на корректность:

$ sudo nginx -t

И в случае, если тест ошибок не нашёл, перезагрузите Nginx:

$ sudo systemctl reload nginx

Теперь, если вы в браузере откроете ссылку http://ap1.site/info.php, браузер вернёт вам страницу конфигурации PHP.

Таким образом, вы настроили Nginx как обратный прокси для Apache.

Настройка mod_rpaf

Для того, чтобы не вносить коррективы в код PHP-приложений для корректной работы на вашем хостинге, необходимо установить и настроить модуль mod_rpaf.

Инсталляцию модуля рекомендуется производить скомпилировав его из исходного кода. Для начала нужно запустить установку командой:

$ sudo apt install unzip build-essential apache2-dev

После чего, загрузите из GitHub последний релиз инсталлируемого модуля:

$ wget https://github.com/gnif/mod_rpaf/archive/stable.zip

После чего, распакуйте его, перейдите в его директорию, соберите и проинсталлируйте модуль:

$ unzip stable.zip
$ cd mod_rpaf-stable
$ make
$ sudo make install

Теперь для установленного модуля необходимо создать следующий файл, для чего наберите:

$ sudo nano /etc/apache2/mods-available/rpaf.load

В него вставьте текст:

LoadModule rpaf_module /usr/lib/apache2/modules/mod_rpaf.so

Закройте файл с сохранением внесённых изменений.

Теперь создайте конфигурационный файл. Для чего наберите:

$ sudo nano /etc/apache2/mods-available/rpaf.conf

Вставьте в него текст:

<IfModule mod_rpaf.c>
RPAF_Enable             On
RPAF_Header             X-Real-Ip
RPAF_ProxyIPs           your_server_ip
RPAF_SetHostName        On
RPAF_SetHTTPS           On
RPAF_SetPort            On
</IfModule>

Закройте файл, сохранив изменения. После чего, запустите модуль и тест на корректность синтаксиса:

$ sudo a2enmod rpaf
$ sudo apachectl -t

Если всё прошло без ошибок, перезапустите сервис:

$ sudo systemctl reload apache2

Теперь, при открытии конфигурационной страницы PHP, значение строки $_SERVER[‘REMOTE_ADDR’] должно содержать IP-адрес локальной рабочей станции.

Таким образом, вы произвели настройку своего сервера, на котором теперь сайты ap1.site и ap2.site работают под управлением Apache, в то время как сайты ng1.site и ng2.site обслуживаются Nginx. И даже, если ваш Nginx используется как обратный прокси, этот прокси-сервер остаётся невидимым из внешней сети. Другими словами, все подключения к сайтам, размещённым на Apache, проходя через Nginx, выглядят работающими непосредственно с Apache.

И ещё из положительных моментов. Если у вас получилось настроить Nginx в качестве веб-сервера и обратного прокси-сервера для Apache на одном сервере Ubuntu, вы сможете запарковать по меньшей мере четыре домена на одном VPS. Такой метод можно применять при более безопасном обслуживании статических сайтов.

Статья полезна?

4 Да  Нет
Похожие статьи
  • Как добавить русский язык в Windows Server 2019/2022
  • Двухфакторная аутентификация с использованием одноразовых паролей
  • Как настроить PTR-записи для домена
  • Как в Linux закрыть доступ для пользователей без пароля
  • Защита SSH-подключения
  • Общая безопасность виртуального сервера
1 комментарий о “Как настроить Nginx в качестве веб-сервера и обратного прокси-сервера для Apache на одном сервере Ubuntu 20.04”
  • Денис says:
    Ответить

    Неверно переименовывать файл mv fastcgi.conf fastcgi_old.conf
    Файл fastcgi_old.conf будет мешать проверке apachectl -t.
    Его надо удалять.

    2024-08-02 at 14:32
Оставить комментарий Отменить ответ

Популярные статьи
  • Как подключиться по RDP из-под MacOS
  • Как установить PostgreSQL и pgAdmin4 в Ubuntu 20.04
  • Управление портами в Linux (Ubuntu/Debian/CentOS)
  • Настройка VPN с использованием WireGuard
  • Как извлекать и разархивировать файлы .tar.gz в Linux-системах
Разделы Справочника
  • Настройка VPS Сервера
  • Начало работы
  • Особенности виртуального сервера
  • Партнерам
  • Развертывание ПО на VPS сервере
  • Сетевые настройки сервера
GAME OVERNIGHT
CLOUDRUSSIA
STRATONET
SPACE DC
ARCTIC DC
VPS/VDS серверы:
Тестовый период
Дешевый VPS
VPS Старт
VPS Мощные
VPS Windows
VPS Быстрые NVMe
VPS с 1C
Форекс VPS
Игровые серверы
VPS для бизнеса
Пинг до дата-центров
Услуги:
Маркетплейс
Панель ispmanager
Антивирусная защита
Аренда лицензий
Облачное хранилище
VPS серверы с Plesk Obsidian
Колокация
Looking Glass
DNS
Клиентам:
О компании
Дата-Центры
Новости
Аттестация по ФСТЭК
Бонусная программа
Публичная Оферта
Соглашение об уровне услуг
Политика обработки персональных данных
Сувениры от RuVDS
Партнерам:
Для прессы
Партнерская программа
Отзывы
API
Помощь:
Справочник
FAQ
Созданных
серверов
231504
Huawey
Supermicro
Cisco
Intel
Microsoft
ISP
Kaspersky
RDCA Logo

«Креатив года» Премия ЦОДы.рф 2021, 2025

RDCA Logo

«Хостер года» Премия ЦОДы.рф 2023

RDCA Logo

«Человек года» Премия ЦОДы.рф 2024

RuVDS
support@RUVDS.com
8 (800) 775-97-42
+7 (495) 135-10-99
МЫ В СОЦИАЛЬНЫХ СЕТЯХ
Copyright © 2025 RuVDS. Все права защищены.
ООО "МТ ФИНАНС" | ОГРН 1157746680332
Оставить отзыв

Условия получения бонуса за оставленный отзыв:

  1. Напишите про нас на любом из специализированных сайтах для отзывов.
  2. Пришлите нам текст отзыва и ссылку на ваш отзыв.
  3. После проверки, мы опубликуем ваш отзыв у нас на сайте и также начислим бонус на ваш баланс.
Strong Testimonials form submission spinner.

Обязательное поле

Укажите электронную почту вашего аккаунта RUVDS
Укажите ссылку на ваш отзыв
rating fields
Поставьте оценку серверам RUVDS
Оставить отзыв
Strong Testimonials form submission spinner.

Обязательное поле

Укажите электронную почту вашего аккаунта RUVDS
Укажите ссылку на ваш отзыв
rating fields
Поставьте оценку серверам RUVDS