Як налаштувати зворотний проксі-сервер Nginx для Apache ⋆ ALexHost SRL

Перевірте свої навички на всіх наших хостингових послугах та отримайте знижку 15%!

Use code at checkout:

Skills
10.12.2024

Як налаштувати зворотний проксі-сервер Nginx для Apache

Nginx та Apache – два найпопулярніші веб-сервери у світі, кожен з яких має свої сильні сторони. Apache відомий своєю гнучкістю та надійною системою модулів, в той час як Nginx цінується за високу продуктивність та низьке споживання ресурсів, особливо при роботі зі статичним контентом. У багатьох сценаріях вигідно комбінувати ці дві системи, використовуючи Nginx як зворотний проксі перед Apache. Таке налаштування дозволяє Nginx обробляти вхідні запити і обслуговувати статичні файли, в той час як Apache обробляє динамічний вміст, наприклад, PHP-скрипти або додатки, керовані базами даних.

У цій статті ми розглянемо процес налаштування Nginx як зворотного проксі для Apache, що забезпечить безперебійну та ефективну конфігурацію веб-сервера.

Що таке зворотний проксі?

Зворотний проксі – це сервер, який знаходиться перед одним або декількома внутрішніми серверами і перенаправляє клієнтські запити на відповідний сервер. В даному випадку Nginx буде виступати в ролі зворотного проксі, перенаправляючи запити на Apache, який буде обслуговувати динамічний контент.

Використання Nginx в якості зворотного проксі пропонує кілька переваг:

  • Покращена продуктивність: Nginx швидко обслуговує статичні файли (наприклад, зображення, CSS, JavaScript), зменшуючи навантаження на Apache.
  • Балансування навантаження: Nginx може розподіляти трафік між декількома внутрішніми серверами, підвищуючи доступність і надійність.
  • Завершення SSL-зєднання: Nginx може обробляти SSL-шифрування, знімаючи обчислювальне навантаження з Apache.
  • Безпека: Nginx може надавати додаткові функції безпеки, такі як фільтрація запитів та обмеження швидкості.

Крок 1: Встановлення Nginx та Apache

Перш ніж налаштувати Nginx в якості зворотного проксі, переконайтеся, що на вашому сервері встановлені Nginx і Apache. Ви можете встановити їх за допомогою менеджера пакетів, залежно від дистрибутива Linux.

Для Debian/Ubuntu:
sudo apt update
sudo apt install nginx apache2
Для CentOS/RHEL:
sudo yum install epel-release
sudo yum install nginx httpd

Після встановлення Nginx і Apache запустіть і увімкніть обидві служби, щоб переконатися, що вони запускаються при завантаженні:

sudo systemctl start nginx
sudo systemctl start apache2 # Для CentOS використовуйте 'httpd' замість 'apache2'
sudo systemctl enable nginx
sudo systemctl enable apache2

Крок 2: Налаштування Apache

Apache буде працювати як внутрішній сервер, обробляючи динамічні запити, такі як PHP-скрипти. Переконайтеся, що Apache налаштовано на прослуховування певного порту, зазвичай порту

8080
(замість стандартного
80
), щоб Nginx міг слухати порт
80
.

Налаштуйте Apache на прослуховування порту 8080:
  1. Відкрийте конфігураційний файл Apache:
    sudo nano /etc/apache2/ports.conf # Для Debian/Ubuntu
    sudo nano /etc/httpd/conf/httpd.conf # Для CentOS/RHEL
  2. Знайдіть рядок, в якому вказано порт, який слухає Apache (зазвичай це
    Listen 80
    ), і змініть його:
    Listen 8080
  3. Збережіть зміни і вийдіть з редактора.
  4. Перезапустіть Apache, щоб застосувати зміни:
    sudo systemctl restart apache2 # Для Debian/Ubuntu
    sudo systemctl restart httpd # Для CentOS/RHEL

Тепер Apache налаштовано на прослуховування порту

8080
, що дозволить Nginx прослуховувати порт
80
(порт HTTP за замовчуванням) і перенаправляти запити на Apache.

Крок 3: Налаштування Nginx в якості зворотного проксі-сервера

Далі нам потрібно налаштувати Nginx на роботу в якості зворотного проксі, перенаправляючи запити на Apache. Ми створимо віртуальний хост в Nginx, який буде слухати порт

80
і перенаправляти запити до Apache на порт
8080
.

Створення конфігурації віртуального хоста Nginx:
  1. Відкрийте або створіть новий файл конфігурації віртуального хоста в Nginx:
    sudo nano /etc/nginx/sites-available/example.com # Для Debian/Ubuntu
    sudo nano /etc/nginx/conf.d/example.com.conf # Для CentOS/RHEL
  2. Додайте до файлу наступну конфігурацію:
    server {
    listen 80;
    server_name example.com www.example.com; # Замініть на ваш домен або IPlocation сервера
    / {
    proxy_pass http://127.0.0.1:8080; # Перенаправляти запити на Apache
    proxy_set_header Хост $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;
    }# Віддавати статичний контент безпосередньо через Nginx для кращої продуктивності
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {{
    закінчується 365d;
    root /var/www/html; # Шлях до ваших статичних файлів
    }
    }

У цій конфігурації

  • listen 80
    : Nginx слухає порт
    80
    для вхідних запитів.
  • ім'я_сервера
    : Домен або IP-адреса, яку буде обслуговувати Nginx.
  • proxy_pass
    : Перенаправляє запити на Apache, який слухає порт
    8080
    .
  • proxy_set_header
    : Передає різні заголовки до Apache, включаючи початковий IP-адресу та протокол клієнта.
  • Блок
    розташування
    для статичного вмісту гарантує, що Nginx обслуговує такі файли, як зображення, CSS і JavaScript безпосередньо, зменшуючи навантаження на Apache.
  1. Збережіть і закрийте файл конфігурації.
  2. Якщо ви використовуєте Debian/Ubuntu, увімкніть сайт, створивши символічне посилання на
    sites-enabled
    :
    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
  3. Перевірте конфігурацію Nginx на наявність синтаксичних помилок:
    sudo nginx -t
  4. Перезапустіть Nginx, щоб застосувати нову конфігурацію:
    sudo systemctl restart nginx

Крок 4: Тестування налаштування зворотного проксі

Тепер, коли Nginx і Apache налаштовані, настав час протестувати налаштування зворотного проксі, щоб переконатися, що все працює правильно.

  1. Перейдіть до свого домену або IP-адреси: Відкрийте браузер і перейдіть за адресою
    http://example.com
    (замініть її на ваш реальний домен або IP-адресу сервера). Якщо все налаштовано правильно, ви повинні побачити вміст, який обслуговується Apache, але проходить через Nginx.
  2. Перевірте логи Nginx і Apache: Якщо виникли якісь проблеми, перевірте логи Nginx і Apache для усунення несправностей:
    • Журнали Nginx:
      /var/log/nginx/access.log
      і
      /var/log/nginx/error.log
    • Логи Apache:
      /var/log/apache2/access.log
      та
      /var/log/apache2/error.log
      (або
      /var/log/httpd/
      для CentOS/RHEL)

Крок 5: (Необов’язково) Налаштуйте SSL для HTTPS

Якщо ви хочете захистити свій сайт за допомогою HTTPS, Nginx може обробляти завершення SSL. Це означає, що Nginx буде керувати SSL-сертифікатами і шифруванням, в той час як Apache буде обробляти тільки розшифрований HTTP-трафік.

Кроки для ввімкнення SSL:
  1. Отримайте SSL-сертифікат: Ви можете використовувати Let’s Encrypt, щоб отримати безкоштовний SSL-сертифікат для вашого домену:
    sudo apt install certbot python3-certbot-nginx # Для Debian/Ubuntu
    sudo yum install certbot python3-certbot-nginx # Для CentOS/RHELsudo
    certbot –nginx -d example.com -d www.example.com
  2. Змініть конфігурацію Nginx: Оновіть конфігураційний файл Nginx для прослуховування порту
    443
    для HTTPS:
    nginx
    сервер {
    listen 443 ssl;
    ім'я_сервера example.com www.example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Хост $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;
    }location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 365d;
    root /var/www/html;
    }
    }
  3. Перенаправлення HTTP на HTTPS: додайте блок перенаправлення у вашій конфігурації, щоб забезпечити перенаправлення всіх HTTP-запитів на HTTPS:
    server {
    listen 80;
    ім'я_сервера example.com www.example.com;
    return 301 https://$server_name$request_uri;
    }
  4. Перезапустіть Nginx: Перезапустіть Nginx, щоб застосувати зміни:
    sudo systemctl restart nginx

Висновок

Використання Nginx в якості зворотного проксі для Apache – це потужне налаштування, яке поєднує в собі сильні сторони обох веб-серверів. Nginx ефективно обробляє статичний контент і вхідні запити, в той час як Apache керує динамічним контентом і внутрішньою обробкою. Цей гібридний підхід може значно підвищити продуктивність, безпеку і масштабованість інфраструктури вашого веб-сервера.

Дотримуючись кроків, викладених у цьому посібнику, ви можете налаштувати Nginx як зворотний проксі перед Apache і скористатися перевагами обох систем. Крім того, використання SSL з Nginx гарантує безпеку вашого веб-сайту, забезпечуючи спокій для вас і ваших користувачів.

Перевірте свої навички на всіх наших хостингових послугах та отримайте знижку 15%!

Use code at checkout:

Skills