Cum să configurați Nginx Reverse Proxy pentru Apache ⋆ ALexHost SRL

Testați-vă abilitățile cu toate serviciile noastre de găzduire și beneficiați de 15% reducere!

Utilizați codul la finalizarea comenzii:

Skills
10.12.2024

Cum să configurați Nginx Reverse Proxy pentru Apache

Nginx și Apache sunt două dintre cele mai populare servere web din lume, fiecare cu punctele sale forte. Apache este cunoscut pentru flexibilitatea și sistemul său robust de module, în timp ce Nginx este preferat pentru performanța sa ridicată și consumul redus de resurse, în special pentru servirea conținutului static. În multe scenarii, este benefică combinarea celor două prin utilizarea Nginx ca proxy invers în fața Apache. Această configurare permite Nginx să gestioneze cererile primite și să servească fișiere statice, în timp ce Apache gestionează conținutul dinamic, cum ar fi scripturile PHP sau aplicațiile bazate pe baze de date.

În acest articol, vă vom ghida prin procesul de configurare a Nginx ca proxy invers pentru Apache, asigurând o configurație fără probleme și eficientă a serverului web.

Ce este un proxy invers?

Un proxy invers este un server care se află în fața unuia sau mai multor servere backend și direcționează solicitările clienților către serverul corespunzător. În acest caz, Nginx va acționa ca un proxy invers, trimițând solicitările către Apache, care va servi conținut dinamic.

Utilizarea Nginx ca proxy invers oferă mai multe beneficii:

  • Performanță îmbunătățită: Nginx excelează la servirea rapidă a fișierelor statice (de exemplu, imagini, CSS, JavaScript), reducând sarcina pe Apache.
  • Echilibrarea încărcăturii: Nginx poate distribui traficul între mai multe servere backend, îmbunătățind disponibilitatea și fiabilitatea.
  • Terminarea SSL: Nginx poate gestiona criptarea SSL, descărcând sarcina de calcul de la Apache.
  • Securitate: Nginx poate oferi funcții de securitate suplimentare, cum ar fi filtrarea cererilor și limitarea ratei.

Pasul 1: Instalarea Nginx și Apache

Înainte de a configura Nginx ca proxy invers, asigurați-vă că atât Nginx, cât și Apache sunt instalate pe serverul dvs. Le puteți instala utilizând managerul de pachete, în funcție de distribuția Linux.

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

După ce Nginx și Apache sunt instalate, porniți și activați ambele servicii pentru a vă asigura că rulează la pornire:

sudo systemctl start nginx
sudo systemctl start apache2 # Pentru CentOS, utilizați "httpd" în loc de "apache2
sudo systemctl enable nginx
sudo systemctl enable apache2

Pasul 2: Configurați Apache

Apache va acționa ca server backend, procesând cereri dinamice, cum ar fi scripturile PHP. Asigurați-vă că Apache este configurat să asculte pe un port specific, de obicei portul

8080
(în loc de portul implicit
80
), astfel încât Nginx să poată asculta pe portul
80
.

Configurați Apache pentru a asculta pe portul 8080:
  1. Deschideți fișierul de configurare Apache:
    sudo nano /etc/apache2/ports.conf # Pentru Debian/Ubuntu
    sudo nano /etc/httpd/conf/httpd.conf # Pentru CentOS/RHEL
  2. Găsiți linia care specifică portul pe care ascultă Apache (de obicei
    Listen 80
    ) și schimbați-o în:
    Listen 8080
  3. Salvați modificările și ieșiți din editor.
  4. Reporniți Apache pentru a aplica modificările:
    sudo systemctl restart apache2 # Pentru Debian/Ubuntu
    sudo systemctl restart httpd # Pentru CentOS/RHEL

Acum, Apache este configurat să asculte pe portul

8080
, ceea ce va permite Nginx să asculte pe portul
80
(portul HTTP implicit) și să transmită cererile către Apache.

Pasul 3: Configurați Nginx ca proxy invers

În continuare, trebuie să configurăm Nginx pentru a acționa ca un proxy invers, redirecționând cererile către Apache. Vom crea o gazdă virtuală în Nginx care să asculte pe portul

80
și să transmită cererile către Apache pe portul
8080
.

Creați configurația gazdei virtuale Nginx:
  1. Deschideți sau creați un nou fișier de configurare a gazdei virtuale în Nginx:
    sudo nano /etc/nginx/sites-available/example.com # Pentru Debian/Ubuntu
    sudo nano /etc/nginx/conf.d/example.com.conf # Pentru CentOS/RHEL
  2. Adăugați următoarea configurație la fișier:
    server {
    listen 80;
    server_name example.com
    www.example.com; # Înlocuiți cu domeniul sau serverul dvs. IPlocation/ {
    proxy_pass http://127.0.0.1:8080; # Transmite cererile către 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;
    }# Servește conținutul static direct prin Nginx pentru o performanță mai bună
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 365d;
    root /var/www/html; # Calea către fișierele dvs. statice
    }
    }

În această configurație:

  • listen 80
    : Nginx ascultă pe portul
    80
    pentru cererile primite.
  • server_name
    : Domeniul sau adresa IP pe care Nginx o va servi.
  • proxy_pass
    : Înaintează solicitările către Apache, care ascultă pe portul
    8080
    .
  • proxy_set_header
    : Transmite diverse antete către Apache, inclusiv IP-ul și protocolul original al clientului.
  • Blocul de
    locație
    pentru conținutul static asigură faptul că Nginx servește direct fișiere precum imagini, CSS și JavaScript, reducând astfel sarcina asupra Apache.
  1. Salvați și închideți fișierul de configurare.
  2. Dacă utilizați Debian/Ubuntu, activați site-ul prin crearea unui link simbolic către
    sites-enabled
    :
    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
  3. Testați configurația Nginx pentru erori de sintaxă:
    sudo nginx -t
  4. Reporniți Nginx pentru a aplica noua configurație:
    sudo systemctl restart nginx

Pasul 4: Testarea configurației reverse proxy

Acum că Nginx și Apache sunt configurate, este timpul să testați configurația proxy-ului invers pentru a vă asigura că totul funcționează corect.

  1. Vizitați-vă domeniul sau adresa IP: Deschideți browserul și navigați la
    http://example.com
    (înlocuiți cu domeniul dvs. real sau IP-ul serverului). Dacă totul este configurat corect, ar trebui să vedeți conținutul servit de Apache, dar direcționat prin Nginx.
  2. Verificați jurnalele Nginx și Apache: Dacă există probleme, verificați jurnalele Nginx și Apache pentru a depana problemele:
    • Jurnalele Nginx:
      /var/log/nginx/access.log
      și
      /var/log/nginx/error.log
    • Jurnalele Apache:
      /var/log/apache2/access.log
      și
      /var/log/apache2/error.log
      (sau
      /var/log/httpd/
      pentru CentOS/RHEL)

Pasul 5: (Opțional) Configurați SSL pentru HTTPS

Dacă doriți să vă securizați site-ul web cu HTTPS, Nginx poate gestiona terminarea SSL. Aceasta înseamnă că Nginx va gestiona certificatele SSL și criptarea, în timp ce Apache va gestiona doar traficul HTTP decriptat.

Pași pentru a activa SSL:
  1. Obțineți un certificat SSL: Puteți utiliza Let’s Encrypt pentru a obține un certificat SSL gratuit pentru domeniul dvs:
    sudo apt install certbot python3-certbot-nginx # Pentru Debian/Ubuntu
    sudo yum install certbot python3-certbot-nginx # Pentru CentOS/RHELsudo
    certbot –nginx -d example.com -d www.example.com
  2. Modificați configurația Nginx: Actualizați fișierul de configurare Nginx pentru a asculta pe portul
    443
    pentru HTTPS:
    nginx
    server {
    listen 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)$ {
    expiră 365d;
    root /var/www/html;
    }
    }
  3. Redirecționarea HTTP către HTTPS: Adăugați un bloc de redirecționare în configurație pentru a vă asigura că toate cererile HTTP sunt redirecționate către HTTPS:
    server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri;
    }
  4. Reporniți Nginx: Reporniți Nginx pentru a aplica modificările:
    sudo systemctl restart nginx

Concluzie

Utilizarea Nginx ca proxy invers pentru Apache este o configurare puternică care combină punctele forte ale ambelor servere web. Nginx gestionează eficient conținutul static și cererile primite, în timp ce Apache gestionează conținutul dinamic și procesarea backend. Această abordare hibridă poate spori considerabil performanța, securitatea și scalabilitatea infrastructurii serverului dvs. web.

Urmând pașii descriși în acest ghid, puteți configura Nginx ca proxy invers în fața Apache și puteți beneficia de cele mai bune avantaje din ambele lumi. În plus, implementarea SSL cu Nginx asigură securitatea site-ului dvs. web, asigurând liniștea dvs. și a utilizatorilor dvs.

Testați-vă abilitățile cu toate serviciile noastre de găzduire și beneficiați de 15% reducere!

Utilizați codul la finalizarea comenzii:

Skills