Junior
Pentru ce se folosește Nginx?
sobes.tech AI
Răspuns de la AI
Nginx este un server web asincron de înaltă performanță și un proxy invers, utilizat pentru:
- Servirea fișierelor statice: Livrare rapidă și eficientă a HTML, CSS, JavaScript, imagini și alte resurse statice. Datorită arhitecturii sale asincrone, poate gestiona un număr mare de conexiuni simultane cu un consum redus de resurse.
- Proxy invers: Trimiterea cererilor de la client către unul sau mai mulți servere backend (aplicații, API-uri) și returnarea răspunsurilor către clienți. Acest lucru permite echilibrarea încărcăturii, creșterea securității (ascunderea structurii interne a rețelei) și terminarea SSL.
- Echilibrarea încărcăturii: Distribuirea cererilor de intrare între mai multe servere pentru a crește disponibilitatea și scalabilitatea aplicației. Suportă diferite algoritmi (de exemplu, round robin, cele mai puține conexiuni).
- Caching: Stocarea în cache a resurselor statice și dinamice pentru a reduce încărcarea pe backend-uri și a accelera răspunsurile.
- Terminarea SSL/TLS: Decriptarea traficului HTTPS înainte de a fi trimis către backend, reducând încărcarea pe serverele de aplicații și permițând gestionarea centralizată a certificatelor.
- Compresie: Comprimarea datelor (de exemplu, Gzip) înainte de a fi trimise către client pentru a reduce traficul și a accelera încărcarea paginilor.
- Limitarea vitezei cererilor: Protejarea backend-urilor împotriva supraîncărcării prin limitarea numărului de cereri de la un client într-un anumit interval de timp.
- Firewall web (WAF): Protecție de bază împotriva atacurilor web comune (de exemplu, injecții SQL, XSS).
# Exemplu de configurație Nginx pentru servirea fișierelor statice și proxy API
server {
listen 80;
server_name example.com; # Numele domeniului
location / {
root /var/www/html; # Calea către fișierele statice
index index.html;
}
location /api/ {
proxy_pass http://backend_server:8080; # Proxy pentru cererile API către alt server
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}