Skontaktuj się z nami

info@serverion.com

Zadzwoń do nas

+1 (302) 380 3902

Opanowanie konfiguracji Nginx w celu uzyskania optymalnej wydajności serwera WWW

Opanowanie konfiguracji Nginx w celu uzyskania optymalnej wydajności serwera WWW

Chcesz szybszych i lepszych stron internetowych wydajność serwera? Nginx może pomóc. Dzięki projektowi opartemu na zdarzeniach Nginx sprawnie obsługuje tysiące połączeń, co czyni go najlepszym wyborem dla witryn o dużym ruchu i aplikacji w czasie rzeczywistym. Jednak aby w pełni wykorzystać jego potencjał, kluczowa jest odpowiednia konfiguracja.

Najważniejsze wnioski:

  • Zwiększ wydajność: Dostosuj procesy robocze i włącz kompresję, aby zmniejszyć wykorzystanie zasobów i przyspieszyć reakcje.
  • Obsługuj ruch: Użyj równoważenia obciążenia, aby rozłożyć ruch na serwery i przeprowadzić optymalizację pod kątem dużych obciążeń.
  • Bezpieczne połączenia: Skonfiguruj zakończenie protokołu SSL w celu zwiększenia bezpieczeństwa bez przeciążania serwerów zaplecza.
  • Aplikacje w czasie rzeczywistym: Skonfiguruj obsługę protokołu WebSocket, aby zapewnić bezproblemową komunikację na platformach w czasie rzeczywistym.
  • Monitoruj skutecznie: Użyj narzędzi takich jak Prometheus i Grafana, aby monitorować stan i wydajność serwera.

Przykłady szybkich konfiguracji:

  • Procesy pracownicze: Dopasuj do rdzeni procesora (procesy_robocze 4;).
  • Kompresja: Włącz Gzip (gzip włączony; gzip_comp_level 6;).
  • Buforowanie: Skonfiguruj buforowanie proxy w celu zwiększenia szybkości (ścieżka_proxy_cache /var/cache/nginx;).
  • Równoważenie obciążenia: Rozdzielaj ruch metodą round-robin lub metodą najmniejszej liczby połączeń.

Wskazówka: Regularnie monitoruj i dostrajaj swoje ustawienia, aby zapewnić płynne działanie serwera. Niezależnie od tego, czy zarządzasz witrynami o dużym ruchu, statyczną treścią czy aplikacjami w czasie rzeczywistym, te konfiguracje mogą mieć ogromne znaczenie.

Dostrajanie wydajności NGINX Open Source i NGINX Plus

NGINX

Kluczowe pliki konfiguracyjne i ustawienia Nginx

Maksymalne wykorzystanie serwera Nginx zaczyna się od zrozumienia jego plików konfiguracyjnych i dostrojenia kluczowych ustawień. Oto zestawienie tego, co musisz wiedzieć.

Zrozumienie plików konfiguracyjnych Nginx

Ustawienia Nginx są podzielone na dwa główne obszary:

  • Ustawienia globalneZnaleziono w /etc/nginx/nginx.conf
  • Ustawienia specyficzne dla witrynyZnajduje się w /etc/nginx/sites-available/

Przed zastosowaniem zmian przetestuj konfigurację za pomocą nginx -t aby mieć pewność, że jest wolny od błędów.

Strojenie procesów i połączeń pracowniczych

Procesy i połączenia robocze odgrywają dużą rolę w tym, jak dobrze działa Twój serwer. Oto krótki przewodnik po ich konfiguracji:

Ustawienie Opis Przykładowa wartość
procesy_robocze Liczba procesów roboczych Pasuje do rdzeni procesora
połączenia_pracowników Maksymalna liczba połączeń na pracownika 1024 – 2048
keepalive_timeout Przekroczono limit czasu połączenia 65 sekund

Wskazówka: Dostosuj te wartości w zależności od sprzętu, jakim dysponujesz na serwerze.

Na przykład, jeżeli Twój serwer ma 4 rdzenie procesora, Twoja konfiguracja może wyglądać następująco:

procesy_robocze 4; zdarzenia { połączenia_robocze 1024; } 

Po zoptymalizowaniu procesów roboczych można jeszcze bardziej zwiększyć wydajność, włączając kompresję i buforowanie.

Korzystanie z kompresji i buforowania Gzip

Kompresja i buforowanie pomagają zmniejszyć przepustowość i poprawić czasy ładowania. Oto jak je skonfigurować:

Włącz kompresję Gzip:

gzip on; gzip_comp_level 6; gzip_types text/zwykły tekst/css aplikacja/json aplikacja/javascript; 

Konfigurowanie buforowania:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=one:10m inactive=60m; proxy_cache one; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; 

Ten ścieżka_pamięci_proxy dyrektywa tworzy strefę pamięci podręcznej dla często używanej zawartości, co zmniejsza obciążenie twojego zaplecza. Możesz również użyć otwórz_pamięć_podręczną_plików do przechowywania często używanych plików w pamięci, co ogranicza wykorzystanie dysku.

Zaawansowane techniki równoważenia obciążenia i SSL

Techniki te, bazujące na optymalizacji procesów roboczych i buforowaniu, koncentrują się na poprawie dystrybucji ruchu i bezpieczeństwa.

Konfigurowanie równoważenia obciążenia

Nginx oferuje potężne narzędzia do rozprowadzania ruchu przychodzącego na wielu serwerach. Oto podstawowa konfiguracja:

zaplecze nadrzędne { # Domyślne: round-robin dla zrównoważonej dystrybucji serwer localhost:8080; serwer localhost:8081; serwer localhost:8082; # Usuń komentarz dla najmniejszej liczby połączeń (lepsze w przypadku nierównomiernego obciążenia) # least_conn; } serwer { listen 80; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } 
  • Każdy z każdym jest idealny dla serwerów o podobnych czasach reakcji.
  • Najmniej połączeń działa lepiej, gdy żądania różnią się stopniem złożoności, pomagając uniknąć przeciążenia wolniejszych serwerów.
  • Aby zachować trwałość sesji, włącz Skrót IP aby konsekwentnie kierować użytkowników do tego samego serwera.

Konfigurowanie zakończenia SSL

Zakończenie SSL przenosi zadania szyfrowania do Nginx, zmniejszając obciążenie serwerów zaplecza. Badania Bobcares sugerują, że może to zmniejszyć opóźnienie uzgadniania SSL nawet o 50%.

Oto jak połączyć zakończenie protokołu SSL z równoważeniem obciążenia:

http { zaplecze nadrzędne { serwer localhost:8080; serwer localhost:8081; } serwer { nasłuchuj 443 ssl; nazwa_serwera example.com; certyfikat_ssl /ścieżka/do/certyfikatu.crt; klucz_certyfikatu_ssl /ścieżka/do/klucza/prywatnego.key; protokoły_ssl TLSv1.2 TLSv1.3; szyfry_ssl_prefer_server włączone; pamięć podręczna sesji_ssl współdzielona:SSL:10m; lokalizacja / { hasło_proxy http://zaplecze; nagłówek_ustawienia_proxy Host $host; nagłówek_ustawienia_proxy X-Real-IP $remote_addr; } } } 

Ważne wskazówki dotyczące protokołu SSL:

  • Trzymaj się TLS 1.2 i 1.3 dla większego bezpieczeństwa.
  • Nadaj priorytet szyfrom po stronie serwera, aby zapewnić silniejsze szyfrowanie.
  • Włącz buforowanie sesji, aby zwiększyć wydajność.

Dostosowywanie Nginx do konkretnych potrzeb

Optymalizacja Nginx dla witryn o dużym ruchu

W przypadku witryn o dużym ruchu konfiguracja Nginx musi być dostrojona, aby skutecznie obsługiwać duże obciążenia. Dostosowanie kluczowych parametrów może znacznie poprawić responsywność serwera i ogólną wydajność.

Dostosowanie rozmiaru bufora

http { rozmiar bufora_ciała_klienta 16k; rozmiar bufora_nagłówka_klienta 4k; maksymalny rozmiar_ciała_klienta 8m; duże bufory_nagłówka_klienta 4 8k; } 

Te ustawienia priorytetyzują wykorzystanie pamięci nad wejściem/wyjściem dysku, przyspieszając obsługę żądań. Na przykład zwiększenie rozmiar_bufora_ciała_klienta zmniejsza potrzebę zapisu plików tymczasowych podczas żądań.

Efektywne zarządzanie logami

http { access_log /var/log/nginx/access.log połączony bufor=32k flush=5s; error_log /var/log/nginx/error.log warn; } 

Użycie bufora 32 KB i 5-sekundowego odstępu między opróżnieniami minimalizuje liczbę operacji na dysku, a jednocześnie zapewnia dokładność i aktualność dzienników.

Ustawienia limitu czasu

http { limit_czasu_ciała_klienta 12; limit_czasu_nagłówka_klienta 12; limit_czasu_wysłania 10; } 

Te wartości limitu czasu pomagają zapobiegać niepotrzebnemu zużywaniu zasobów serwera przez powolnych klientów.

Po wprowadzeniu tych zmian możliwe będzie również dostosowanie Nginx do aplikacji wymagających ciągłej komunikacji, np. WebSockets.

Konfigurowanie Nginx dla obsługi WebSocket

WebSockets są krytycznym elementem aplikacji czasu rzeczywistego. Prawidłowe skonfigurowanie Nginx do obsługi połączeń WebSocket zapewnia płynną pracę nawet pod obciążeniem.

mapa $http_upgrade $connection_upgrade { domyślne uaktualnienie; '' zamknij; } serwer { nasłuchuj 80; server_name example.com; lokalizacja /websocket { proxy_pass http://backend_server; proxy_http_version 1.1; proxy_set_header Uaktualnij $http_upgrade; proxy_set_header Połączenie $connection_upgrade; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; # Ustawienia limitu czasu dla połączeń WebSocket proxy_read_timeout 300s; proxy_send_timeout 300s; } } 

Kluczowe szczegóły konfiguracji WebSocket:

Dyrektywa Cel, powód
wersja_proxy_http Włącza obsługę protokołu HTTP/1.1 dla protokołu WebSocket
limit_czasu_odczytu_proxy Ustawia maksymalny czas między pakietami danych
limit_czasu_wysyłania_proxy Definiuje maksymalny czas wysyłania danych
ominięcie_pamięci_proxy Wyłącza buforowanie dla ruchu WebSocket

Ten mapa Dyrektywa skutecznie zarządza aktualizacjami połączeń, zapewniając płynną komunikację WebSocket.

Aby zapobiec nadużyciom, można zastosować ograniczenie przepustowości połączeń WebSocket:

http { limit_req_zone $binary_remote_addr zone=websocket_limit:10m rate=5r/s; location /websocket { limit_req zone=websocket_limit burst=20 nodelay; # ... reszta konfiguracji WebSocket } } 

Taka konfiguracja ogranicza liczbę żądań IP do 5 na sekundę przy 20 żądaniach w serii, chroniąc przed atakami DoS i zapewniając dostępność usługi.

Najlepsze praktyki dotyczące wydajności i monitorowania Nginx

Oprócz początkowej konfiguracji, utrzymanie optymalnej konfiguracji Nginx gwarantuje, że będzie on w stanie efektywnie obsługiwać zmieniające się obciążenia.

Kluczowe obszary, na których należy się skupić

Aby poprawić wydajność Nginx, należy dostosować konkretne ustawienia, które mają bezpośredni wpływ na wydajność działania serwera.

Zarządzanie procesami pracowniczymi

Ten limit_roboczy_nofile dyrektywa jest kluczowa dla zarządzania deskryptorami plików. Zapewnia, że serwer może obsługiwać wiele równoczesnych połączeń bez osiągania limitów w okresach dużego ruchu:

limit_pracownika_nofile 65535; 

Korzystanie z pamięci podręcznej otwartych plików

Pamięć podręczna otwartych plików minimalizuje operacje wejścia/wyjścia na dysku poprzez buforowanie metadanych często używanych plików, co przyspiesza dostarczanie statycznej zawartości:

http { open_file_cache max=1000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; } 

Po wdrożeniu tych optymalizacji regularne monitorowanie staje się niezbędne, aby zapewnić ciągłą wydajność i zidentyfikować obszary wymagające dalszych zmian.

Monitorowanie wydajności Nginx

Monitorowanie pomaga śledzić wydajność serwera i odkrywać wszelkie wąskie gardła lub nieefektywności. Kluczowe wskaźniki, które należy obserwować, obejmują wskaźniki żądań, wskaźniki błędów i wykorzystanie zasobów. Narzędzia takie jak Prometheus i Grafana ułatwiają gromadzenie i wizualizację tych danych.

Zalecony Narzędzia monitorujące

Narzędzie Cel, powód Kluczowe wskaźniki
Prometeusz Zbiera dane dotyczące występów na żywo Współczynniki żądań, czasy reakcji, współczynniki błędów
Grafana Wizualizuje trendy wydajności Użycie procesora, zużycie pamięci, wzorce ruchu
góra Śledzi wykorzystanie zasobów systemowych Wykorzystanie procesów, przydział pamięci

Konfigurowanie metryk wydajności

Włącz monitorowanie statusu w Nginx, konfigurując następujące elementy:

lokalizacja /nginx_status { stub_status włączony; access_log wyłączony; zezwól na 127.0.0.1; zamknij wszystko; } 

Ta konfiguracja zapewnia wgląd w:

  • Aktywne połączenia
  • Łączna liczba zaakceptowanych połączeń
  • Statystyki obsługi żądań
  • Czytanie, pisanie i oczekiwanie na połączenia

Efektywna analiza dzienników

Buforowane rejestrowanie może zmniejszyć obciążenie dysku poprzez grupowanie zapisów logów. Pomaga to utrzymać wydajność serwera bez poświęcania dokładności logów.

„Regularne monitorowanie i dostosowywanie na podstawie danych o wydajności są kluczowe dla osiągnięcia optymalnych rezultatów. Ważne jest, aby unikać wprowadzania zbyt wielu zmian naraz, ponieważ może to komplikować rozwiązywanie problemów”.

Opcje hostingu dla Nginx

Wybór odpowiedniego środowiska hostingowego jest równie ważny, jak dostrajanie konfiguracji Nginx. Właściwa platforma zapewnia, że Twoje optymalizacje przyniosą najlepsze rezultaty.

Cechy Serverion Hosting

Serverion

Serverion oferuje platformę hostingową zaprojektowaną specjalnie dla Nginx, zapewniającą wyjątkową wydajność i niezawodność.

Przechowywanie i wydajność
Serverion korzysta z pamięci masowej SSD zoptymalizowanej pod kątem Nginx, co zmniejsza opóźnienia wejścia/wyjścia i przyspiesza dostęp do plików konfiguracyjnych i dzienników.

Infrastruktura bezpieczeństwa
Dzięki ochronie DDoS na poziomie przedsiębiorstwa Serverion zwiększa bezpieczeństwo Nginx. Zapewnia to czas sprawności podczas ataków i uzupełnia funkcje równoważenia obciążenia Nginx.

Typ zasobu Specyfikacje Korzyści dla Nginx
Procesor Xeon czterordzeniowy Zarządza procesami pracowniczymi w sposób efektywny
BARAN Do 16 GB Zwiększa wydajność buforowania
Przechowywanie Oparty na dyskach SSD Przyspiesza dostęp do plików
Pasmo Duża pojemność Obsługuje niezawodne równoważenie obciążenia

Skalowalna infrastruktura
Plany Serverion są zaprojektowane tak, aby dostosować się do rosnących potrzeb w zakresie ruchu. Dzięki temu konfiguracja Nginx może obsłużyć zwiększone zapotrzebowanie bez utraty wydajności.

„Regularne monitorowanie i optymalizacja wydajności są niezbędne podczas hostowania Nginx. Właściwe środowisko hostingowe powinno zapewniać zarówno zasoby, jak i narzędzia niezbędne do utrzymania optymalnej wydajności serwera”.

Wsparcie ekspertów
Zespół wsparcia Serverion jest dostępny 24 godziny na dobę, 7 dni w tygodniu, w tym specjaliści Nginx, którzy mogą pomóc w dostosowaniu konfiguracji i wydajności do Twoich potrzeb.

Wnioski i wskazówki końcowe

Podsumowanie kluczowych punktów

Aby w pełni wykorzystać możliwości Nginx, należy skupić się na jasnym podejściu krok po kroku. Zacznij od zrozumienia ograniczeń sprzętowych i wzorców ruchu na serwerze. Następnie dostosuj ustawienia, takie jak procesy robocze, buforowanie i równoważenie obciążenia, aby mieć pewność, że serwer działa płynnie i wydajnie.

Kroki, aby zacząć

  1. Sprawdź poprawność konfiguracji:Przed wprowadzeniem jakichkolwiek zmian na żywo, użyj nginx -t aby sprawdzić konfigurację pod kątem błędów.
  2. Główne optymalizacje:
    • Mecz procesy_robocze do rdzeni procesora serwera (np. procesy_robocze 4 dla serwera 4-rdzeniowego).
    • Włącz kompresję gzip, aby zmniejszyć rozmiar plików o 50–70%.
    • Dostosuj rozmiary buforów, aby wydajniej obsługiwać żądania.
  3. Zaawansowane funkcje:
    • Skonfiguruj zakończenie SSL, aby zabezpieczyć połączenia.
    • Skonfiguruj buforowanie zawartości z odpowiednimi ustawieniami wygasania.
    • Używaj równoważenia obciążenia dostosowanego do wzorców ruchu.
    • Zainstaluj narzędzia takie jak Prometheus i Grafana, aby monitorować wydajność.

Monitorowanie wydajności: Kluczowe jest monitorowanie wydajności serwera. Śledź metryki, takie jak wskaźniki żądań, czasy odpowiedzi i wykorzystanie zasobów, aby wychwycić wszelkie problemy, zanim wpłyną one na użytkowników.

„Regularne monitorowanie i optymalizacja wydajności są niezbędne podczas hostowania Nginx. Właściwa kombinacja ustawień konfiguracji i narzędzi monitorujących zapewnia optymalną wydajność serwera w czasie”.

Często zadawane pytania

Poniżej znajdziesz odpowiedzi na najczęściej zadawane pytania dotyczące konfiguracji Nginx, które pomogą Ci rozwiązać problemy i poprawić wydajność.

Jak mogę sprawdzić, czy Nginx buforuje?

Aby sprawdzić, czy Nginx buforuje zawartość, sprawdź nagłówki odpowiedzi HTTP. Poszukaj:

  • Pamięć podręczna X:Wartość „HIT” oznacza, że zawartość jest buforowana.
  • Status pamięci podręcznej X: Wskazuje aktualny stan buforowania.

Aby wyświetlić nagłówki, możesz użyć tego polecenia:

curl -I https://twojastrona.com 

Notatka: Upewnij się, że te nagłówki są skonfigurowane w konfiguracji Nginx; w przeciwnym razie nie pojawią się w odpowiedzi.

Oto przykładowa konfiguracja umożliwiająca efektywne skonfigurowanie buforów:

rozmiar bufora_ciała_klienta 10 KB; rozmiar bufora_nagłówka_klienta 1 KB; maksymalny rozmiar_ciała_klienta 8 MB; duże bufory_nagłówka_klienta 4 4 KB; 

Jak włączyć obsługę WebSocket?

Aby włączyć obsługę protokołu WebSocket, upewnij się, że hasło_proxy dyrektywa wskazuje na serwer zaplecza WebSocket. Szczegółowe instrukcje można znaleźć we wcześniejszej sekcji na temat konfiguracji WebSocket.

Jak mogę bezpiecznie skonfigurować protokół SSL?

Aby bezpiecznie skonfigurować protokół SSL, użyj następującej konfiguracji:

serwer { nasłuchuj 443 ssl; nazwa_serwera example.com; certyfikat_ssl /ścieżka/do/cert.crt; klucz_certyfikatu_ssl /ścieżka/do/cert.key; protokoły_ssl TLSv1.2 TLSv1.3; szyfry_ssl HIGH:!aNULL:!MD5; } 

Jak zoptymalizować Nginx pod kątem dużego ruchu?

W przypadku witryn o dużym ruchu skoncentruj się na następujących kluczowych obszarach:

  • Mecz procesy_robocze do liczby rdzeni procesora i zwiększenia połączenia_pracowników aby obsłużyć więcej połączeń.
  • Skonfiguruj efektywne buforowanie w celu zmniejszenia obciążenia serwera.
  • Dostosuj rozmiary buforów, aby efektywniej przetwarzać żądania.

„Regularne monitorowanie i optymalizacja wydajności są niezbędne podczas hostowania Nginx. Właściwa kombinacja ustawień konfiguracji i narzędzi monitorujących zapewnia optymalną wydajność serwera w czasie”.

Powiązane wpisy na blogu

pl_PL