Sobes.tech
Junior

Do czego służy Nginx?

sobes.tech AI

Odpowiedź od AI

Nginx jest asynchronicznym serwerem WWW wysokiej wydajności i serwerem proxy odwrotnym, używanym do:

  1. Obsługi plików statycznych: Szybkie i efektywne dostarczanie HTML, CSS, JavaScript, obrazów i innych zasobów statycznych. Dzięki architekturze asynchronicznej może obsługiwać dużą liczbę jednoczesnych połączeń przy niskim zużyciu zasobów.
  2. Proxy odwrotne: Przekazywanie żądań klientów do jednego lub wielu serwerów backend (aplikacji, API) i zwracanie odpowiedzi klientom. Umożliwia to równoważenie obciążenia, zwiększenie bezpieczeństwa (ukrywanie wewnętrznej struktury sieci) i obsługę terminacji SSL.
  3. Równoważenie obciążenia: Rozdzielanie przychodzących żądań między wiele serwerów w celu zwiększenia dostępności i skalowalności aplikacji. Obsługuje różne algorytmy równoważenia (np. round robin, najmniej połączeń).
  4. Pamięć podręczna: Buforowanie zasobów statycznych i dynamicznych w celu zmniejszenia obciążenia backendów i przyspieszenia odpowiedzi.
  5. Terminacja SSL/TLS: Deszyfrowanie ruchu HTTPS przed jego przesłaniem do backendu, co zmniejsza obciążenie serwerów aplikacji i umożliwia centralne zarządzanie certyfikatami.
  6. Kompresja: Kompresja danych (np. Gzip) przed wysłaniem do klienta w celu zmniejszenia ruchu i przyspieszenia ładowania stron.
  7. Ograniczanie prędkości żądań: Ochrona backendów przed przeciążeniem poprzez ograniczenie liczby żądań od pojedynczego klienta w określonym czasie.
  8. Zapora sieciowa (WAF): Podstawowa ochrona przed powszechnymi atakami webowymi (np. SQL injection, XSS).
# Przykład konfiguracji Nginx do obsługi plików statycznych i proxy API

server {
    listen 80;
    server_name example.com; # Nazwa domeny

    location / {
        root /var/www/html; # Ścieżka do plików statycznych
        index index.html;
    }

    location /api/ {
        proxy_pass http://backend_server:8080; # Proxy żądań API do innego serwera
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}