Ce este un proxy invers și cum funcționează?
Publicat: 2022-08-09
Proxy-urile inverse sunt un instrument util în setul de instrumente al oricărui administrator de sistem. Au o mulțime de utilizări, inclusiv echilibrarea sarcinii, protecție împotriva atacurilor DDOS
Ce sunt proxy-urile inverse?
Un proxy obișnuit, numit Forward Proxy, este un server prin care este direcționată conexiunea unui utilizator. În multe privințe, este ca un simplu VPN, care se află în fața conexiunii tale la internet. VPN-urile sunt un exemplu comun al acestora, dar includ și lucruri precum firewall-urile școlare, care pot bloca accesul la anumite conținuturi.
Un proxy invers funcționează puțin diferit. Este un instrument de backend folosit de administratorii de sistem. În loc să se conecteze direct la un site web care oferă conținut, un proxy invers precum NGINX poate sta în mijloc. Când primește o solicitare de la un utilizator, va trimite înainte, sau „proxy”, acea cerere către serverul final. Acest server se numește „server de origine”, deoarece este ceea ce va răspunde de fapt la solicitări.
În timp ce un utilizator va ști probabil dacă este direcționat printr-un proxy direct, cum ar fi un VPN sau un firewall, proxy-urile inverse sunt instrumente backend. Din câte știe utilizatorul, se conectează doar la un site web. Tot ce se află în spatele proxy-ului invers este ascuns, iar acest lucru are, de asemenea, numeroase beneficii.
Totuși, acest efect se întâmplă și invers. Serverul de origine nu are o conexiune directă cu utilizatorul și va vedea doar o grămadă de solicitări provenind de la IP-ul proxy-ului invers. Aceasta poate fi o problemă, dar majoritatea serviciilor proxy precum NGINX vor adăuga antete precum X-Forwarded-For
la cerere. Aceste anteturi vor informa serverul de origine despre adresa IP reală a clientului.
Pentru ce sunt folosite proxy-urile inverse?
Proxy-urile inverse sunt destul de simple în concept, dar se dovedesc a fi un instrument surprinzător de util cu multe cazuri de utilizare neașteptate.
Echilibrarea sarcinii
Unul dintre principalele beneficii ale unui proxy invers este cât de ușor pot fi. Deoarece ei doar trimit cereri, nu trebuie să facă o mulțime de procesare, mai ales în situațiile în care o bază de date trebuie să fie interogată.
Aceasta înseamnă că blocajul este adesea serverul de origine, dar cu un proxy invers în față, puteți avea cu ușurință mai multe servere de origine. De exemplu, proxy-ul ar putea trimite 50% din cereri către un server și 50% către altul, dublând capacitatea site-ului web. Servicii precum HAProxy sunt concepute pentru a gestiona bine acest lucru.
Acesta este un caz de utilizare foarte comun, iar majoritatea furnizorilor de cloud precum Amazon Web Services (AWS) vor oferi echilibrarea sarcinii ca serviciu, scutindu-vă de problemele de a-l configura singur. Cu automatizarea cloud, puteți chiar să măriți automat numărul de servere de origine ca răspuns la trafic, o caracteristică numită „scalare automată”.
Echilibratoarele de încărcare, cum ar fi Elastic Load Balancer de la AWS, pot fi configurate pentru a se reconfigura automat atunci când serverele dvs. de origine merg în sus și în jos, totul fiind posibil printr-un proxy invers sub capotă.
RELATE: Cum să începeți cu Elastic Load Balancers de la AWS
Memorarea în cache
Deoarece un proxy invers este adesea mult mai rapid la răspuns decât serverul de origine, o tehnică numită caching este folosită în mod obișnuit pentru a accelera cererile pe rutele comune. Memorarea în cache este atunci când datele paginii sunt stocate pe proxy invers și sunt solicitate doar de la serverul de origine o dată la câteva secunde/minute. Acest lucru reduce stresul pe serverul de origine.

De exemplu, acest articol pe care îl citiți acum a fost difuzat de WordPress, care trebuie să discute cu o bază de date SQL pentru a prelua conținutul articolului și metadatele. A face asta pentru fiecare reîmprospătare a paginii este o risipă, având în vedere că pagina nu se schimbă cu adevărat. Deci, această rută poate fi stocată în cache, iar proxy-ul invers va trimite înapoi ultimul răspuns următorului utilizator, în loc să deranjeze WordPress din nou.
O rețea dedicată de proxy inversați care memorează în cache conținutul dvs. se numește Rețea de livrare de conținut sau CDN. CDN-urile precum CloudFlare sau Fastly sunt foarte frecvent utilizate de site-urile mari pentru a accelera livrarea globală. Serverele din întreaga lume care memorează în cache conținutul se numesc „noduri de margine” și, dacă aveți multe dintre ele, site-ul dvs. poate fi foarte rapid.
Protecția rețelei și confidențialitatea
Deoarece utilizatorul nu știe ce se află în spatele proxy-ului invers, nu va putea să atace cu ușurință serverele dvs. de origine direct. De fapt, proxy-urile inverse sunt utilizate în mod obișnuit cu serverele de origine din subrețele private, ceea ce înseamnă că nu au deloc conexiuni de intrare la internetul exterior.
Acest lucru vă menține confidențialitatea configurării rețelei și, în timp ce securitatea prin obscuritate nu este niciodată sigură, este mai bine decât să o lăsați deschisă atacului.
Această încredere inerentă poate fi utilă și atunci când vă planificați rețeaua. De exemplu, un server API care vorbește cu o bază de date este similar cu un proxy invers. Baza de date știe că poate avea încredere în serverul API din subrețeaua privată, iar serverul API acționează ca firewall pentru baza de date, permițând doar conexiunile corecte prin intermediul acestuia.
Frontend configurabil
Unul dintre avantajele proxy-urilor inverse precum NGINX este cât de puternic sunt configurabile. Adesea, sunt utile pentru a le avea în fața altor servicii doar pentru a configura modul în care utilizatorii accesează acele servicii.
De exemplu, NGINX este capabil să limiteze cererile la anumite rute, ceea ce poate împiedica abuzatorii să facă mii de solicitări către serverele de origine de la un singur IP. Acest lucru nu oprește atacurile DDOS, dar este bine să aveți.
NGINX este, de asemenea, capabil să redirecționeze traficul de la mai multe nume de domenii cu blocuri „server” configurabile. De exemplu, ar putea trimite solicitări către example.com
către serverul dvs. de origine, dar să trimită api.example.com
către serverul dvs. API special sau files.example.com
către stocarea dvs. de fișiere și așa mai departe. Fiecare server poate avea propria sa configurație și reguli.
NGINX poate adăuga, de asemenea, funcții suplimentare peste serverele de origine existente, cum ar fi certificatele HTTPS centralizate și configurația antetului.
Uneori, este util doar să aveți NGINX pe aceeași mașină cu un alt serviciu local, pur și simplu pentru a difuza conținut din acel serviciu. De exemplu, API-urile web ASP.NET folosesc un server web intern numit Kestrel, care este bun în a răspunde solicitărilor, dar nu prea multe altele. Este foarte obișnuit să rulați Kestrel pe un port privat și să utilizați NGINX ca un proxy invers configurabil.
Înregistrare centralizată
Acesta este destul de simplu, dar faptul că cea mai mare parte a traficului dvs. trece printr-un singur serviciu face ușoară verificarea jurnalelor. Jurnalul de acces al NGINX conține o mulțime de informații utile despre traficul dvs. și, deși nu depășește caracteristicile unui serviciu precum Google Analytics, sunt informații grozave de avut.
LEGATE: Cum să configurați un panou de analiză și monitorizare Elasticsearch pentru afacerea dvs