Într-o arhitectură web modernă, un singur server gestionează adesea mai multe servicii – aplicații web, baze de date, servicii de cache și alte componente critice.
Nginx este soluția preferată pentru rolul de reverse proxy datorită performanței sale remarcabile în gestionarea conexiunilor concurente, consumului redus de memorie și flexibilității în configurare.
Funcționează ca un intermediar inteligent care primește cererile de la vizitatori și le direcționează către serviciul potrivit din infrastructura serverului.
Un reverse proxy aduce beneficii semnificative pentru orice website cu trafic mediu sau mare. Pe lângă distribuirea încărcării între mai multe servere, Nginx ca reverse proxy oferă terminare SSL, cache pentru conținut static, compresie automată și protecție împotriva atacurilor DDoS de bază.
Toate aceste funcții îmbunătățesc metricile de performanță și securitatea serverului, contribuind direct la o experiență mai bună pentru utilizatori și la rezultate SEO superioare.
În acest ghid veți învăța cum să instalați și să configurați Nginx ca reverse proxy pe un server Linux, cum să setați proxy pass către Apache sau alte servicii și cum să optimizați configurarea pentru performanță și securitate maxime.
Vom parcurge fiecare pas al procesului, de la instalare până la depanarea problemelor frecvente, astfel încât să puteți implementa această soluție cu încredere pe propriul server.
Cum configurați Nginx ca reverse proxy pe Linux
Configurarea Nginx ca reverse proxy presupune instalarea Nginx, crearea configurației de proxy pass și optimizarea parametrilor pentru performanță. Procesul este similar pe toate distribuțiile Linux majore, cu diferențe minore în ceea ce privește comenzile de instalare și căile fișierelor de configurare. Înainte de a începe, asigurați-vă că aveți acces root sau privilegii sudo pe server.
Ce este un reverse proxy și de ce aveți nevoie de el
Un reverse proxy se interpune între vizitatori și serverul (sau serverele) care găzduiesc website-ul. Spre deosebire de un proxy obișnuit care protejează clientul, un reverse proxy protejează serverul și optimizează traficul înainte ca acesta să ajungă la aplicația backend.
Beneficiile principale ale unui reverse proxy Nginx includ:
- Servirea fișierelor statice – Nginx servește imagini, CSS și JavaScript direct din memorie, fără a implica Apache sau PHP, reducând semnificativ încărcarea serverului
- Terminare SSL – Nginx gestionează criptarea SSL/TLS și trimite traficul necriptat către backend, eliberând resursele Apache
- Load balancing – distribuie cererile între mai multe servere backend pentru disponibilitate și scalabilitate crescute
- Cache – stochează răspunsurile serverului backend și le servește direct pentru cererile repetitive, reducând dramatic timpii de răspuns
- Compresie – comprimă răspunsurile înainte de a le trimite clientului, reducând traficul de rețea
- Securitate – ascunde detaliile serverului backend și filtrează cererile malițioase
- Disponibilitate crescută – poate redirecționa traficul către servere de rezervă dacă serverul principal devine indisponibil
Instalarea Nginx pe Linux
Procesul de instalare diferă ușor în funcție de distribuția Linux folosită. Mai jos găsiți instrucțiunile pentru cele mai comune distribuții.
Pe Ubuntu și Debian
sudo apt update
sudo apt install nginx
sudo systemctl start nginx
sudo systemctl enable nginxPe AlmaLinux, CentOS și Rocky Linux
sudo dnf install nginx
sudo systemctl start nginx
sudo systemctl enable nginxDupă instalare, verificați că Nginx funcționează accesând adresa IP a serverului în browser. Ar trebui să vedeți pagina implicită Nginx. Dacă Apache rulează deja pe portul 80, trebuie mai întâi să schimbați portul Apache sau să opriți Apache temporar.
Verificați starea serviciului Nginx cu comanda:
sudo systemctl status nginxPentru a confirma că Nginx ascultă pe porturile corecte, folosiți:
sudo ss -tlnp | grep nginxConfigurarea Nginx ca reverse proxy pentru Apache
Cea mai frecventă configurație este Nginx în fața Apache. Nginx ascultă pe porturile 80 (HTTP) și 443 (HTTPS), în timp ce Apache ascultă pe un port intern (de exemplu 8080). Această arhitectură valorifică punctele forte ale ambelor servere web.
Schimbarea portului Apache
Modificați Apache să asculte pe portul 8080 editând fișierul de configurare al porturilor:
Pe Ubuntu/Debian, editați /etc/apache2/ports.conf:
Listen 8080Pe AlmaLinux/CentOS, editați /etc/httpd/conf/httpd.conf:
Listen 8080Actualizați și configurația VirtualHost pentru a folosi portul 8080. Asigurați-vă că blocul VirtualHost din fișierele de configurare ale site-urilor dvs. folosește noul port:
<VirtualHost *:8080>
ServerName domeniul-dvs.ro
DocumentRoot /var/www/html
# restul configurației Apache
</VirtualHost>Reporniți Apache după modificări:
sudo systemctl restart apache2 # Ubuntu/Debian
sudo systemctl restart httpd # AlmaLinux/CentOSConfigurarea Nginx proxy pass
Creați un fișier de configurare Nginx pentru website-ul dvs. Fișierele de configurare se plasează în /etc/nginx/sites-available/ pe Ubuntu/Debian sau în /etc/nginx/conf.d/ pe AlmaLinux/CentOS:
server {
listen 80;
server_name domeniul-dvs.ro www.domeniul-dvs.ro;
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;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}Headerele proxy_set_header sunt esențiale – ele transmit informațiile originale ale clientului (IP, protocol) către Apache. Fără aceste headere, Apache ar vedea toate cererile ca venind de la 127.0.0.1, ceea ce ar afecta jurnalele de acces și funcțiile dependente de IP, precum blocarea geografică sau limitarea ratei.
Pe Ubuntu/Debian, activați configurația creând un link simbolic:
sudo ln -s /etc/nginx/sites-available/domeniul-dvs.ro /etc/nginx/sites-enabled/Servirea fișierelor statice direct din Nginx
Una dintre cele mai mari optimizări este servirea fișierelor statice direct din Nginx, fără a le trimite către Apache. Adăugați o locație specifică înainte de proxy pass:
server {
listen 80;
server_name domeniul-dvs.ro www.domeniul-dvs.ro;
location ~* .(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf|eot|webp)$ {
root /var/www/html;
expires 30d;
access_log off;
add_header Cache-Control "public, no-transform";
add_header Vary "Accept-Encoding";
}
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;
}
}Această configurație servește imaginile, fișierele CSS și JavaScript direct din Nginx cu headere de cache de 30 de zile, fără a implica Apache deloc. Rezultatul este o reducere semnificativă a încărcării pe Apache și o îmbunătățire a timpilor de răspuns pentru vizitatori.
Configurarea SSL cu Nginx
Nginx gestionează terminarea SSL eficient. Configurați certificatul SSL în blocul server, de exemplu cu Let’s Encrypt:
server {
listen 443 ssl http2;
server_name domeniul-dvs.ro www.domeniul-dvs.ro;
ssl_certificate /etc/letsencrypt/live/domeniul-dvs.ro/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domeniul-dvs.ro/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
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;
}
}
server {
listen 80;
server_name domeniul-dvs.ro www.domeniul-dvs.ro;
return 301 https://$host$request_uri;
}Cu această configurație, comunicarea între Nginx și Apache se face necriptat pe 127.0.0.1 (localhost), ceea ce este sigur deoarece traficul nu părăsește serverul. Headerul HSTS asigură că browserele vor folosi întotdeauna HTTPS pentru domeniul dvs.
Activarea cache-ului Nginx
Nginx poate stoca în cache răspunsurile Apache-ului și le poate servi direct pentru cererile identice ulterioare. Configurați cache-ul în blocul http din /etc/nginx/nginx.conf:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=wp_cache:10m max_size=1g inactive=60m use_temp_path=off;Creați directorul de cache și setați permisiunile corecte:
sudo mkdir -p /var/cache/nginx
sudo chown nginx:nginx /var/cache/nginxApoi în blocul location /:
location / {
proxy_pass http://127.0.0.1:8080;
proxy_cache wp_cache;
proxy_cache_valid 200 60m;
proxy_cache_valid 404 1m;
proxy_cache_bypass $http_cookie;
proxy_no_cache $http_cookie;
add_header X-Cache-Status $upstream_cache_status;
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;
}Directiva proxy_cache_bypass asigură că utilizatorii autentificați (cu cookie-uri WordPress) primesc conținut proaspăt, nu din cache. Headerul X-Cache-Status vă permite să verificați în timp real dacă un răspuns vine din cache (HIT) sau direct de la server (MISS).
Optimizări de performanță suplimentare
Editați fișierul principal de configurare Nginx (/etc/nginx/nginx.conf) pentru a optimiza performanța generală a serverului:
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 1024;
multi_accept on;
use epoll;
}
http {
keepalive_timeout 65;
keepalive_requests 100;
client_max_body_size 64m;
client_body_timeout 12;
client_header_timeout 12;
send_timeout 10;
gzip on;
gzip_vary on;
gzip_min_length 1000;
gzip_proxied any;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
gzip_comp_level 6;
}Parametrii importanți și efectul lor:
- worker_processes auto – Nginx folosește automat câte un proces worker per nucleu CPU, maximizând utilizarea resurselor
- worker_connections 1024 – numărul maxim de conexiuni per worker; pentru servere cu trafic ridicat, puteți crește la 4096
- keepalive_timeout 65 – menține conexiunile deschise pentru cereri multiple, reducând overhead-ul TCP
- gzip on – activează compresia pentru răspunsurile text, reducând dimensiunea transferurilor cu 60-80%
- client_max_body_size 64m – dimensiunea maximă a cererilor; ajustați pentru încărcări de fișiere mari
- use epoll – folosește mecanismul epoll al kernel-ului Linux pentru gestionarea eficientă a conexiunilor
Configurarea load balancing
Dacă dispuneți de mai multe servere backend, Nginx poate distribui traficul între ele prin load balancing. Configurați un upstream în blocul http:
upstream backend_servers {
least_conn;
server 127.0.0.1:8080 weight=3;
server 127.0.0.1:8081 weight=1;
server backup-server.domeniu.ro:80 backup;
keepalive 32;
}Apoi în blocul location, înlocuiți adresa directă cu referința la upstream:
location / {
proxy_pass http://backend_servers;
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;
}Algoritmul least_conn direcționează cererile noi către serverul cu cel mai mic număr de conexiuni active. Parametrul backup marchează un server ca rezervă, folosit doar când celelalte servere sunt indisponibile.
Verificarea și depanarea configurației
Înainte de a aplica modificările, verificați întotdeauna sintaxa configurației Nginx:
sudo nginx -tDacă testul trece fără erori, reîncărcați configurația fără downtime:
sudo systemctl reload nginxDacă apar probleme, verificați jurnalele cu journalctl:
sudo journalctl -u nginx -n 50 --no-pager
sudo tail -f /var/log/nginx/error.logProblemele frecvente și soluțiile lor:
- Eroare 502 Bad Gateway – Apache nu rulează pe portul configurat; verificați cu
sudo ss -tlnp | grep 8080 - Eroare 504 Gateway Timeout – creșteți valorile
proxy_connect_timeout,proxy_send_timeoutșiproxy_read_timeout - IP incorect în jurnalele Apache – activați modulul
remoteipîn Apache și configurați-l să accepte IP-ul de la Nginx - Redirecționări infinite – asigurați-vă că headerul
X-Forwarded-Protoeste transmis și că WordPress sau aplicația dvs. îl recunoaște
Configurarea Nginx ca reverse proxy transformă arhitectura serverului dvs. într-o soluție profesională care oferă performanță, scalabilitate și securitate superioare. Investiția de timp în configurarea corectă se recuperează prin timpi de răspuns mai mici, capacitate crescută de a gestiona traficul și o experiență mai bună pentru vizitatorii website-ului. Combinat cu backup-uri automate și monitorizare constantă, un reverse proxy Nginx formează coloana vertebrală a unui server web performant și sigur.


Comments (0)