Generator konfiguracji Nginx
Pisanie konfiguracji Nginx od zera oznacza pamiętanie o każdej linii proxy_set_header, o każdym typie MIME kompresowanym przez gzip oraz o różnicy między try_files $uri/ /index.php?$args a wersją, która po cichu psuje routing. Ten generator pyta o domenę, upstream, obsługę PHP i ścieżki plików SSL, a następnie zwraca server block z rozsądnymi ustawieniami domyślnymi dla TLS, HTTP/2, buforowania plików statycznych i kompresji.
Jak wygenerować swój server block
-
1
Wybierz gotowy schemat
Strona statyczna, PHP-FPM (Laravel, WordPress), reverse proxy dla Node.js albo zwykłe przekierowanie 301.
-
2
Podaj domenę
Wpisz pełną listę server_name, zwykle wariant z www i bez www.
-
3
Ustaw dane SSL
Wskaż pliki fullchain i privkey albo pomiń ten krok, jeśli używasz wyłącznie HTTP.
-
4
Dostosuj upstream
Port, ścieżka gniazda lub adres URL backendu w przypadku proxy_pass.
-
5
Skopiuj i wdróż
Umieść wynik w /etc/nginx/sites-available, uruchom nginx -t, a następnie przeładuj Nginx.
Jak wygląda dobry server block
Nowoczesny host wirtualny Nginx składa się zwykle z takich elementów:
| Element | Zadanie |
|---|---|
listen 443 ssl http2 |
Przyjmuje połączenia HTTPS z włączonym HTTP/2 |
ssl_certificate + ssl_certificate_key |
Wskazuje pliki certyfikatu i klucza TLS |
ssl_protocols TLSv1.2 TLSv1.3 |
Odrzuca stare wersje TLS |
gzip on + lista typów |
Kompresuje tekst/HTML/JSON/JS/CSS w locie |
Nagłówki expires dla plików statycznych |
Ogranicza powtarzające się żądania powracających użytkowników |
try_files |
Przekazuje żądanie do kontrolera wejściowego (PHP, Laravel itd.) |
| HSTS + nagłówki bezpieczeństwa | Wymusza na przeglądarce korzystanie z TLS |
Podstawy reverse proxy
Dla aplikacji w Node.js, Pythonie i Ruby działających za Nginx:
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
Pominięcie X-Forwarded-For to klasyczny sposób na utratę prawdziwych adresów IP klientów w logach aplikacji.
Najczęstsze błędy
- Brak zapasowego bloku server_name. Jeśli żadna nazwa nie pasuje, Nginx użyje pierwszego bloku server jako domyślnego. Dodaj blok
server_name _przechwytujący wszystko i zwracający 444, aby zabezpieczyć się przed atakami na nagłówek Host. - Zła kolejność certyfikatów. Plik
ssl_certificatemusi zawierać pełny łańcuch (fullchain: certyfikat serwera i certyfikaty pośrednie), a nie sam certyfikat serwera. - Zbyt agresywne buforowanie. Nagłówek
expires 1ydla/index.htmlzepsuje kolejne wdrożenia. Zamiast tego wersjonuj adresy URL plików statycznych. - Przeładowanie bez testu. Zawsze uruchom
nginx -tprzedsystemctl reload nginx: jeden błąd składni potrafi wyłączyć całą witrynę.
Najczęściej zadawane pytania
HTTP/2 jest stabilny i powszechnie obsługiwany w Nginx 1.25+. HTTP/3 (QUIC) jest dostępny w Nginx 1.25+, ale wciąż jako funkcja eksperymentalna. W konfiguracji produkcyjnej włącz dziś HTTP/2, a HTTP/3 dodaj opcjonalnie dyrektywami http3 i quic.
Przyjęło się trzymać publiczne łańcuchy w /etc/ssl/certs/, a klucze prywatne w /etc/ssl/private/. Let’s Encrypt umieszcza wszystko w /etc/letsencrypt/live/domain/. Trzymaj się ścieżki, której oczekuje Twoje narzędzie do odnawiania certyfikatów.
W większości witryn tak. Dodaj osobny server block na porcie 80, który zwraca 301 https://$host$request_uri. W połączeniu z HSTS blok HTTP po pierwszym żądaniu praktycznie przestaje być używany.
Uruchom sudo nginx -t, aby przeanalizować konfigurację bez przeładowania. Jeśli wypisze “syntax is ok” oraz “test is successful”, przeładuj serwer poleceniem sudo systemctl reload nginx. Nigdy nie używaj restart na produkcji: przeładowanie wprowadza zmiany bez przerywania obsługi ruchu.
Powiązane narzędzia
Tabela ASCII
Pełna tabela ASCII od 0 do 127 z zapisem dziesiętnym, szesnastkowym, ósemkowym i binarnym oraz notacją numerycznych odwołań HTML, w tym kodami sterującymi NUL, LF i DEL.
Referencja znaków HTML
Przeszukiwalna lista encji HTML wraz z ich kodami nazwanymi i liczbowymi oraz kopiowaniem jednym kliknięciem specjalnych znaków i symboli.
Skróty klawiaturowe
Wyszukuj udokumentowane skróty domyślne VS Code, Chrome i Bash z GNU Readline w macOS, Windows i Linux.
Generator EditorConfig
Wygeneruj plik .editorconfig z własnymi regułami stylu i rozmiaru wcięć, końca linii, kodowania i białych znaków, aby uzyskać spójne formatowanie w różnych IDE i edytorach.
Walidator adresów e-mail
Zweryfikuj adres e-mail: sprawdzenie składni RFC 5322, sprawdzenie rekordu MX w czasie rzeczywistym oraz szczegóły dotyczące części lokalnej, domeny i długości. Żadna wiadomość nie jest wysyłana.
Formatowanie HTML
Formatuj HTML lokalnie w przeglądarce, używając wcięć dwóch lub czterech spacji. HTML nie jest wysyłany ani walidowany.
Narzędzie jest dostępne w innych językach
- Gerador de Configuração Nginx [PT]
- Trình tạo cấu hình Nginx [VI]
- Nginx 設定ジェネレーター [JA]
- Generador de Configuración de Nginx [ES]
- Nginx-konfigurationsgenerator [SV]
- مولّد إعدادات Nginx [AR]
- Nginx Konfigurationsgenerator [DE]
- Générateur de configuration Nginx [FR]
- Nginx 설정 생성기 [KO]
- ตัวสร้างไฟล์ config ของ Nginx [TH]
- Generator Konfigurasi Nginx [ID]
- Nginx-configuratiegenerator [NL]
- Nginx Config Generator [EN]
- Generatore di Configurazione Nginx [IT]
- Генератор конфигураций Nginx [RU]
- Nginx Yapılandırma Üreteci [TR]
- Nginx 配置生成器 [ZH]