뚠뚠멍의 생각들

Kluczowe ustawienia Nginx jako serwera WWW

  • Język oryginalny: Koreański
  • Kraj: Wszystkie krajecountry-flag
  • TO

Utworzono: 2024-09-26

Utworzono: 2024-09-26 21:20

Nginx to open-source'owe oprogramowanie, często używane jako serwer WWW lub serwer proxy WWW.

Przy odpowiedniej konfiguracji może wydajnie dostarczać zawartość statyczną.

Chcę tutaj zapisać kilka kluczowych ustawień.


Kilka kluczowych ustawień związanych z wydajnością

1. Kompresja gzip

Podczas ładowania strony internetowej, pobieramy z serwera WWW wiele plików, takich jak JavaScript, obrazy, HTML i CSS.

Zamiast przesyłać te treści w oryginalnej postaci, możemy wykorzystać kompresję gzip, co znacznie zmniejszy ilość przesyłanych danych.


Oznacza to, że po zastosowaniu:

- Zmniejszy się ilość danych, co zaowocuje oszczędnością przepustowości.

- Można zaoszczędzić zasoby serwera.

- Z punktu widzenia użytkownika, rzeczywista prędkość ładowania wzrośnie.


Z drugiej strony, ponieważ serwer musi wykonać kompresję gzip przed wysłaniem odpowiedzi, może to prowadzić do wzrostu obciążenia procesora.

Przed zastosowaniem na poziomie produkcyjnym konieczne jest przeprowadzenie testów, aby określić, które typy plików mają być kompresowane, jaki poziom kompresji zastosować i jak duże pliki kompresować.


Poniżej przedstawiono kilka ustawień związanych z gzip.

* gzip_vary instruuje, aby serwer wysyłał skompresowaną i nieskompresowaną wersję zawartości, odpowiednio, w zależności od tego, czy klient obsługuje gzip. (informuje, że w zależności od nagłówka żądania klienta (Accept-Encoding) może zostać dostarczona inna wersja zawartości).


2. Ustawienie proxy_buffer

Nginx buforuje odpowiedzi przed wysłaniem ich do klienta.

Gdy serwer WWW wysyła odpowiedź do klienta, a klient jest powolny, serwer musi czekać na wysłanie danych. (wąskie gardło sieci)

W tym czasie serwer zużywa zasoby, dlatego używamy bufora do tymczasowego przetwarzania odpowiedzi niezależnie od szybkości przetwarzania klienta. Dzięki temu uzyskujemy następujące korzyści:

- Optymalizacja obciążenia serwera

- Zmniejszenie wąskiego gardła sieci

Uwaga: Zbyt duży rozmiar bufora może opóźnić przesyłanie strumieniowe tekstu w czasie rzeczywistym, dlatego konieczne są testy. Szczególnie w przypadku wielu nowych usług związanych z AI, jeśli strumieniowanie tekstu nie działa, należy sprawdzić to ustawienie.


3. Ustawienia worker i http

Procesy worker przetwarzają żądania klientów, a ich liczbę można skonfigurować dla każdego rdzenia procesora serwera.

HTTP to zazwyczaj żądanie - połączenie - odpowiedź - zamknięcie połączenia, ale aby zmniejszyć zasoby używane do nawiązywania połączeń dla wielu żądań, można utrzymywać połączenia klienta. Jest to ustawienie keep alive.

Powodem grupowania tych dwóch ustawień jest to, że:

Jeśli serwer ma 4 rdzenie, teoretycznie maksymalna liczba połączeń wynosi 1024 * 4 = 4096.

(Może być niedokładne w zależności od zasobów i warunków ruchu sieciowego)

Gdy 4096 klientów łączy się jednocześnie i zajmuje wszystkie keepalive przez 65 sekund,

4097. użytkownik próbujący się połączyć może napotkać opóźnienia w odpowiedzi, ponieważ nie będzie mógł nawiązać połączenia.


Zatem, zakładając stabilne zasoby serwera dzięki automatycznej skalowalności, jeśli występują opóźnienia w odpowiedzi podczas zdarzeń, powyższe ustawienia mogą mieć pośredni wpływ.


4. Inne - blok location

Niektóre ustawienia, takie jak bufor proxy, można zastosować do poszczególnych adresów URL żądań.

* Niektóre ustawienia, takie jak keep-alive, są stosowane na poziomie HTTP/serwera i nie można ich ustawiać dla poszczególnych bloków.

server {
listen 80;
server_name example.com;


Powyższe ustawienia pozwalają na optymalizację wydajności sieci web. Po przeprowadzeniu testów z uwzględnieniem wielu przypadków testowych, zoptymalizuj wydajność serwera!

* Zmiany w konfiguracji nginx można zastosować bez przestojów serwera, więc w większości przypadków jest to bezpieczne.






Komentarze0