Generator Nginx reverse proxy
Wystaw aplikację pod domeną przez Nginx
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator Nginx reverse proxy
Reverse proxy przyjmuje ruch z internetu i przekazuje go do aplikacji działającej lokalnie (np. na porcie 3000). Nginx pełni tu rolę bramy z SSL i nagłówkami.
Kluczowe dyrektywy
| Dyrektywa | Znaczenie |
|---|---|
| proxy_pass | adres aplikacji docelowej |
| proxy_set_header Host | przekazanie oryginalnej domeny |
| X-Forwarded-Proto | informacja o protokole (http/https) |
| Upgrade / Connection | obsługa WebSocket |
WebSocket
Aplikacje real-time (czaty, aplikacje na żywo) wymagają przekazania nagłówków Upgrade i Connection. Bez nich połączenie WebSocket nie zadziała.
Wdrożenie
nginx -t systemctl reload nginx
Zawsze sprawdź składnię przed przeładowaniem — błąd w konfiguracji może zatrzymać serwer.
Jak działa generator bloku server dla reverse proxy
Generator zbiera z formularza kilka niezależnych informacji: domenę, adres aplikacji docelowej, port, sposób obsługi HTTPS, opcję WebSocket oraz dodatkowe nagłówki. Na tej podstawie buduje tekst bloku server, który można wkleić do konfiguracji Nginx. Nie uruchamia serwera ani nie sprawdza, czy aplikacja faktycznie nasłuchuje pod podanym adresem. Tworzy jedynie poprawną składniowo deklarację, która po wdrożeniu ma kierować ruch z zewnątrz do wskazanego procesu.
Mechanizm działania opiera się na dopasowaniu żądania przez Nginx. Najpierw wybierany jest blok server na podstawie server_name i portu, na którym przyszło połączenie. Następnie lokalizacja location / przechwytuje żądanie i przekazuje je dalej przez proxy_pass. Nagłówki takie jak Host, X-Forwarded-Proto czy X-Forwarded-For informują aplikację, z jakiej domeny, protokołu i adresu IP przyszło żądanie. Dzięki temu aplikacja może generować poprawne linki, logować ruch i podejmować decyzje bezpieczeństwa.
Wynik zależy wyłącznie od ustawień wprowadzonych w formularzu, ponieważ narzędzie nie korzysta ze sztywnych tablic wartości. Jeśli zmienisz port aplikacji, wyłączysz HTTPS albo dodasz obsługę WebSocket, wygenerowany blok server zmieni się odpowiednio. To czyni generator wygodnym punktem startowym, ale nadal wymaga zrozumienia, jak Nginx przetwarza ruch i jak wygląda topologia Twojej infrastruktury.
Przykład krok po kroku dla aplikacji na porcie 3000
- W polu domeny wpisz app.example.com. To trafi do dyrektywy server_name i sprawi, że blok będzie obsługiwał ruch właśnie dla tej subdomeny.
- Jako adres aplikacji podaj 127.0.0.1:3000. Taki wpis oznacza, że Nginx ma przekazywać żądania do procesu działającego lokalnie na porcie 3000.
- Zaznacz opcję HTTPS oraz przekierowanie z HTTP na HTTPS. Generator przygotuje dwa bloki server: pierwszy na porcie 80 z przekierowaniem 301, drugi na porcie 443 z konfiguracją SSL i właściwym proxy_pass.
- Włącz obsługę WebSocket, jeśli aplikacja korzysta z połączeń dwukierunkowych. W wygenerowanym pliku pojawią się nagłówki Upgrade i Connection ustawione na wartości wymagane przez protokół.
- Wygeneruj konfigurację i sprawdź, czy aplikacja odpowiada bezpośrednio pod adresem 127.0.0.1:3000. Dopiero potem wdrażaj blok server, aby uniknąć sytuacji, w której Nginx kieruje ruch do niedziałającego procesu.
- Po wdrożeniu przetestuj adres https://app.example.com. Oczekiwany wynik to odpowiedź aplikacji z portu 3000, ale widoczna pod domeną z certyfikatem SSL. Ruch z portu 80 powinien zostać przekierowany na 443, a nagłówki przekazane do aplikacji powinny zawierać informację o oryginalnym protokole HTTPS.
Zależność między ustawieniem a wygenerowanym fragmentem
| Ustawienie w generatorze | Element w pliku | Efekt dla ruchu |
|---|---|---|
| Domena główna | server_name | Nginx wybiera ten blok tylko dla wskazanej nazwy hosta. |
| Adres aplikacji | proxy_pass | Żądania są przekazywane do podanego procesu zamiast obsługiwane lokalnie. |
| Port aplikacji | część adresu proxy_pass | Pozwala kierować ruch do usługi działającej na innym porcie niż domyślny. |
| HTTPS i przekierowanie | listen 443 ssl oraz return 301 | Ruch szyfrowany trafia do aplikacji, a połączenia HTTP są przenoszone na HTTPS. |
| WebSocket | Upgrade i Connection | Umożliwia utrzymanie połączenia dwukierunkowego dla aplikacji czasu rzeczywistego. |
| Nagłówki forwardowane | Host, X-Forwarded-Proto, X-Forwarded-For | Aplikacja widzi oryginalną domenę, protokół i adres klienta. |
| Limit ciała żądania | client_max_body_size | Określa, jak duże żądania mogą dotrzeć do aplikacji bez odrzucenia przez Nginx. |
Praktyczne wskazówki przed wdrożeniem
- Trzymaj osobny plik dla każdej domeny — łatwiej wtedy wycofać zmianę, uniknąć konfliktów server_name i porównać konfiguracje między środowiskami.
- Sprawdź, na jakim interfejsie nasłuchuje aplikacja — jeśli proces jest dostępny tylko lokalnie, użyj adresu pętli zwrotnej. Jeśli działa w kontenerze, wskaż nazwę usługi lub adres sieciowy zamiast ślepo kopiować 127.0.0.1.
- Dostosuj timeouts do charakteru ruchu — krótkie żądania API nie potrzebują długich czasów oczekiwania, ale aplikacje real-time mogą wymagać większych wartości proxy_read_timeout.
- Przekazuj oryginalne IP i protokół — dzięki temu logi i mechanizmy ograniczania ruchu w aplikacji będą opierać się na danych klienta, a nie na adresie proxy.
- Testuj na kopii konfiguracji — przed przeładowaniem produkcyjnego Nginxa użyj środowiska staging lub tymczasowego portu, aby sprawdzić, czy ruch faktycznie trafia do właściwej aplikacji.
Ograniczenia generatora
- Nie zastępuje hardeningu TLS — generator tworzy podstawowe dyrektywy SSL, ale nie dobiera polityk szyfrów, OCSP stapling ani parametrów wymaganych w audycie bezpieczeństwa.
- Nie zna topologii sieci — nie wie, czy aplikacja działa w Dockerze, Kubernetesie, za load balancerem albo CDN. Adres upstream trzeba podać ręcznie i zweryfikować po stronie infrastruktury.
- Nie konfiguruje zdrowia upstreamu — brak health checków, kolejkowania i automatycznego wyłączania błędnych instancji. Do tego potrzebny jest pełny blok upstream oraz mechanizmy zewnętrzne.
- Nie uwzględnia limitów aplikacji — wygenerowane bufory, timeouts i limit ciała żądania są ogólne. Wysokie uploady lub długotrwałe połączenia wymagają dostrojenia zarówno w Nginx, jak i w samej aplikacji.
Najczęstsze pytania
Skąd certyfikat HTTPS?
Najłatwiej przez Let's Encrypt i Certbot, który potrafi automatycznie dodać dyrektywy SSL do bloku server.
Po co nagłówek X-Real-IP?
Bez niego aplikacja widzi adres proxy, nie użytkownika. Utrudnia to logowanie i ograniczanie ruchu.
Jak obsłużyć duże pliki?
Zwiększ client_max_body_size — domyślnie Nginx odrzuca żądania większe niż 1 MB.
Czy wygenerowany blok server mogę wkleić bezpośrednio do nginx.conf?
Możesz, ale lepiej umieścić go w osobnym pliku w katalogu sites-available i dołączyć przez include. Dzięki temu łatwiej zarządzać wieloma domenami i wycofać zmianę.
Co wpisać w adres aplikacji, jeśli działa w Dockerze?
Jeśli Nginx działa na hoście, użyj adresu hosta i opublikowanego portu. Jeśli Nginx jest w tej samej sieci Docker, wskaż nazwę kontenera lub usługi oraz port wewnętrzny.
Czy generator obsługuje wiele domen w jednym bloku?
Tak, jeśli wpiszesz je w polu domen oddzielone spacjami lub przecinkami, powstaną odpowiednie wpisy server_name. Pamiętaj, że dla każdej domeny może być potrzebny osobny certyfikat lub certyfikat SAN.
Dlaczego po włączeniu WebSocket połączenie nadal zrywa się?
Sprawdź, czy aplikacja rzeczywiście obsługuje WebSocket oraz czy po drodze nie ma CDN lub load balancera, który nie przekazuje nagłówków Upgrade i Connection. Sam blok Nginx to nie zawsze jedyna warstwa.
Czy generator doda przekierowanie z HTTP na HTTPS?
Jeśli zaznaczysz opcję HTTPS i przekierowanie, generator doda osobny blok server dla portu 80 z instrukcją return 301 na adres HTTPS. Bez tej opcji ruch HTTP może pozostać obsługiwany lub odrzucony zależnie od konfiguracji.