Как да настроите обратен прокси сървър на Nginx за Apache ⋆ ALexHost SRL

Изпробвайте уменията си за всички наши хостинг услуги и получете 15% отстъпка!

Използвайте код на касата:

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 $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 за по-добра производителност
    местоположение ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 365d;
    root /var/www/html; # Път до статичните файлове
    }
    }

В тази конфигурация:

  • слушане 80
    : Nginx слуша на порт
    80
    за входящи заявки.
  • server_name
    : Домейнът или IP адресът, който Nginx ще обслужва.
  • proxy_pass
    : Препраща заявките към Apache, който слуша на порт
    8080
    .
  • proxy_set_header
    : Предава различни заглавия на Apache, включително оригиналния IP адрес и протокол на клиента.
  • Блокът за
    местоположение
    за статично съдържание гарантира, че Nginx обслужва директно файлове като изображения, CSS и JavaScript, като намалява натоварването на Apache.
  1. Запазете и затворете конфигурационния файл.
  2. Ако използвате Debian/Ubuntu, разрешете сайта, като създадете symlink към
    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
    server {
    слушайте 443 ssl;
    server_name 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 $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)$ {
    изтича 365d;
    root /var/www/html;
    }
    }
  3. Пренасочване на HTTP към HTTPS: Добавете блок за пренасочване в конфигурацията си, за да гарантирате, че всички HTTP заявки се пренасочват към HTTPS:
    сървър {
    listen 80;
    server_name 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% отстъпка!

Използвайте код на касата:

Skills