NGINX cu Reverse Proxy
Introducere în NGINX și Reverse Proxy
NGINX este un server HTTP de înaltă performanță, un server proxy invers și un software open-source utilizat de multe site-uri web din întreaga lume. Versatilitatea și viteza sa l-au făcut o alegere populară pentru găzduirea web, echilibrarea încărcării, cache și proxy invers. Un proxy invers, în special, este un instrument puternic care se află în fața unui server web și direcționează solicitările clienților către serverele backend corespunzătoare. Acest articol va acoperi elementele de bază ale NGINX cu proxy invers și modul de configurare eficientă a acestuia.
Ce este un proxy invers?
Un proxy invers acționează ca un intermediar între clienți și serverele backend. Spre deosebire de un proxy obișnuit, care este utilizat de clienți pentru a accesa resursele în mod anonim, un proxy invers este poziționat pe partea serverului, gestionând cererile de la clienți și distribuindu-le către serverele backend corespunzătoare. Printre principalele avantaje ale utilizării unui proxy invers se numără:
- Echilibrarea încărcăturii: Distribuirea cererilor clienților pe mai multe servere, prevenind supraîncărcarea unui singur server și îmbunătățind performanța generală.
- Securitate și anonimat: ascunderea adreselor IP ale serverelor backend, protejându-le de expunerea directă la internet.
- Caching: Caching de conținut static pentru a accelera livrarea resurselor solicitate frecvent.
- Terminarea SSL: Descărcarea criptării și decriptării SSL/TLS către proxyul invers, reducând sarcina de procesare pe serverele backend.
De ce să utilizați NGINX ca proxy invers?
Designul ușor și arhitectura non-blocking a NGINX îl fac o alegere excelentă pentru un proxy invers. Acesta poate gestiona un număr mare de conexiuni simultane cu un consum redus de resurse, ceea ce îl face ideal pentru site-urile web care se confruntă cu un trafic ridicat sau care trebuie să mențină o disponibilitate ridicată. Unele avantaje ale utilizării NGINX ca proxy invers includ:
- Performanță ridicată: NGINX este proiectat pentru a gestiona eficient un număr mare de conexiuni, ceea ce îl face perfect pentru mediile care necesită timpi rapizi de solicitare-răspuns.
- Flexibilitate: NGINX permite configurarea ușoară a mai multor servere backend, permițând configurații complexe de echilibrare a sarcinii și failover.
- Scalabilitate: Pe măsură ce traficul crește, puteți adăuga mai multe servere backend și echilibra încărcătura fără întreruperi.
- Caracteristici de securitate: NGINX poate impune conexiuni HTTPS, bloca anumite adrese IP și gestiona autentificarea.
Cum să configurați NGINX ca proxy invers
Configurarea NGINX ca proxy invers implică configurarea NGINX pentru a asculta cererile HTTP sau HTTPS primite și pentru a le redirecționa către unul sau mai multe servere backend. Iată un ghid pas cu pas pentru a începe:
Pasul 1: Instalarea NGINX
Dacă nu ați instalat NGINX pe serverul dumneavoastră, începeți prin a-l instala. Pentru majoritatea distribuțiilor Linux, puteți utiliza următoarea comandă:
# Pentru Debian/Ubuntu
sudo apt update
sudo apt install nginx
# Pentru CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx
Odată instalat, porniți serviciul NGINX:
sudo systemctl start nginx
Pasul 2: Configurarea de bază a proxy-ului invers NGINX
Pentru a configura un proxy invers de bază, trebuie să editați fișierul de configurare NGINX, situat de obicei la adresa /etc/nginx/nginx.conf sau să creați un nou fișier de configurare în /etc/nginx/conf.d/. Mai jos este prezentată o configurație simplă pentru proxyul invers al cererilor către un server backend:
server {
listen 80;
server_name example.com;
locație / {
proxy_pass http://backend_server;
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;
}
}
- listen 80;: Spune NGINX să asculte solicitările HTTP pe portul 80.
- server_name: Înlocuiți example.com cu domeniul dvs. sau adresa IP.
- proxy_pass: Specifică adresa serverului backend unde ar trebui să fie redirecționate solicitările.
- proxy_set_header: Setează antetele suplimentare care trebuie transmise serverului backend, care pot fi utile pentru logare și securitate.
Pasul 3: Reverse Proxy pentru mai multe servere backend
Pentru a configura echilibrarea sarcinii între mai multe servere backend, puteți defini un bloc upstream:
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
server_name example.com;
locație / {
proxy_pass http://backend;
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 distribuie cererile între backend1.example.com, backend2.example.com și backend3.example.com în mod round-robin.
Pasul 4: Activați SSL pentru conexiuni securizate
Pentru a securiza comunicarea dintre clienți și proxy-ul invers NGINX, puteți activa SSL/TLS. Veți avea nevoie de un certificat SSL, care poate fi obținut de la furnizori precum Let’s Encrypt:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/ssl_certificate.crt;
ssl_certificate_key /path/to/ssl_certificate_key.key;
locație / {
proxy_pass http://backend_server;
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;
}
}
Asigurați-vă că înlocuiți căile către certificatul și cheia SSL. Cu această configurare, NGINX va încheia conexiunea SSL și va redirecționa traficul către serverul backend prin HTTP.
Pasul 5: Testarea și repornirea NGINX
După efectuarea modificărilor la configurația NGINX, este important să testați configurația pentru a depista eventuale erori de sintaxă:
sudo nginx -t
Dacă nu sunt raportate erori, reporniți NGINX pentru a aplica modificările:
sudo systemctl restart nginx
Configurarea avansată a proxy-ului invers NGINX
Pentru setări mai avansate, puteți configura caching, rescrierea URL-urilor și algoritmi personalizați de echilibrare a încărcării. Iată câteva opțiuni suplimentare:
- Caching: Pentru a activa cachingul, adăugați directivele proxy_cache în blocul de locație.
- Echilibrarea încărcării personalizate: Utilizați diferite strategii de echilibrare a încărcării, cum ar fi least_conn pentru distribuirea traficului către serverul backend cu cele mai puține conexiuni active.
- Verificări de sănătate: Configurați verificările de sănătate pentru a vă asigura că NGINX redirecționează traficul numai către serverele backend sănătoase utilizând proxy_next_upstream.
Concluzii
Utilizarea NGINX ca proxy invers este o modalitate puternică de a gestiona traficul și de a îmbunătăți scalabilitatea, performanța și securitatea aplicațiilor dvs. web. Prin configurarea NGINX pentru a gestiona cererile și a le distribui între serverele backend, puteți obține o infrastructură foarte disponibilă și eficientă. Indiferent dacă găzduiți un site web mic sau o aplicație la scară largă, NGINX cu capabilități de proxy invers poate fi o componentă esențială a arhitecturii dvs.
Cu ajutorul acestui ghid, ar trebui să fiți bine echipat pentru a configura și optimiza NGINX ca proxy invers pentru nevoile dvs.