Wstęp
Witajcie, drodzy administratorzy serwerów, zapaleńcy linuksowych rozwiązań i wszyscy ci, którzy na hasło „reverse proxy” nie wybiegają z pokoju z krzykiem. Dziś podzielę się z Wami historią migracji, która – niczym dobre sci-fi – ma swoje zwroty akcji, niespodzianki i happy end (a przynajmniej na razie!).
Spis treści
TogglePrzez ostatnie lata moim głównym narzędziem do zarządzania serwerem WWW i pocztą był zestaw OpenLiteSpeed z CyberPanel. Jednak życie (a konkretnie: autorzy CyberPanel) postanowili, że Ubuntu 24.04 LTS nie będzie im w głowie. I tak przez ponad 3 lata… Aktualizacja? Zapomnij! Support dla nowych wersji Ubuntu? Pomyliłeś adres! Tak oto w czerwcu 2025 roku, mimo licznych próśb i oczekiwań, CyberPanel wciąż nie wspiera najnowszego Ubuntu. I nie zapowiada się, by coś się w tej kwestii zmieniło.
Ale nie ma tego złego… Postanowiłem więc wziąć sprawy w swoje ręce. W efekcie powstała hybryda na miarę XXI wieku: Ubuntu Server 24.04, ISPConfig z Nginx jako reverse proxy oraz OpenLiteSpeed bez CyberPanelowego balastu. Dlaczego taka kombinacja? Bo lubię mieć kontrolę, cenię sobie wydajność, elastyczność i – co tu kryć – nie chcę być zakładnikiem archaicznych paneli admina.
Takie rozwiązanie daje:
- Świeżutki, wspierany system operacyjny z długim wsparciem (a nie wykopaliska z 2022 roku)
- Pełną kontrolę nad konfiguracją, bez ograniczeń narzucanych przez CyberPanel
- Możliwość korzystania z wydajności OpenLiteSpeed i prostoty zarządzania przez ISPConfig
- Bezproblemową obsługę zarówno stron WWW, jak i poczty (a kto próbował skonfigurować własną pocztę na OLS + CyberPanel ten wie, jak wygląda piekło)
- Nowoczesność, elastyczność i gotowość na przyszłość – a przy okazji mniej siwych włosów na głowie
Czy jest to rozwiązanie dla każdego? Pewnie nie – ale jeśli masz dość czekania na łaskę twórców panelu, szukasz czegoś wydajnego i lubisz mieć nad wszystkim kontrolę – zostań ze mną. W kolejnych częściach pokażę, jak skonfigurować taki serwer krok po kroku, bez zbędnych zaklęć i frustracji.
Dlaczego warto tworzyć osobnych klientów dla każdej strony w ISPConfig?
Konfigurując serwer w ISPConfig, bezpieczeństwo i porządek to podstawa. Dlatego jedną z najlepszych praktyk jest tworzenie osobnego klienta dla każdej strony internetowej, którą zamierzamy hostować. Takie podejście nie tylko upraszcza zarządzanie, ale przede wszystkim podnosi poziom bezpieczeństwa – nawet jeśli na pierwszy rzut oka wydaje się to bardziej czasochłonne.
Zalety zakładania osobnego klienta dla każdej strony:
- Izolacja danych – Każdy klient (a więc i jego strony, maile, bazy danych) działa w swojej własnej „piaskownicy”. Gdyby doszło do włamania na jedną stronę, pozostałe są dużo lepiej chronione.
- Łatwiejsza administracja – Zarządzanie uprawnieniami, kopie zapasowe, limity zasobów – wszystko jest czytelne i można ustawiać indywidualnie dla każdego klienta.
- Przejrzystość rozliczeń – Jeśli świadczysz usługi hostingowe, łatwiej rozliczysz się z każdym klientem osobno.
- Bezpieczna poczta – Konta e-mail klientów są od siebie oddzielone. Spam lub włamanie do jednego konta nie wpływa na pozostałe.
- Prostsze przenosiny lub usuwanie – Usunięcie jednej strony (razem z klientem) nie wpłynie na inne witryny na serwerze.
Pokażę teraz, jak – krok po kroku – stworzyć klienta pod nową stronę na przykładzie solutionsinc.co.uk.
Limity i bezpieczeństwo w ISPConfig – dlaczego to takie ważne?
Po utworzeniu klienta w ISPConfig, jednym z najważniejszych etapów konfiguracji jest ustawienie limitów oraz zadbanie o bezpieczeństwo konta. Dzięki ISPConfig możesz precyzyjnie określić, ile zasobów (stron, kont e-mail, baz danych itp.) może wykorzystać każdy klient – to świetne narzędzie do zarządzania zarówno komercyjnymi usługami hostingowymi, jak i własnymi projektami.
Przykładowe limity, które możesz ustawić:
- Maksymalna liczba domen i subdomen
- Limit przestrzeni dyskowej (Web Quota)
- Limit transferu (Traffic Quota)
- Liczba kont FTP, użytkowników SSH
- Możliwość korzystania z określonych technologii (np. PHP, Python, Ruby, SSL, Let’s Encrypt)
- Limity dla e-maili, baz danych, zadań Cron i innych usług
Ustawianie limitów pozwala utrzymać porządek, zapobiega przypadkowemu „przeciążeniu” serwera i chroni przed nadużyciami (np. przez błędną konfigurację aplikacji lub atak DDoS).
Bezpieczne hasło – Twój pierwszy mur obronny
Bardzo istotną sprawą podczas tworzenia konta klienta jest ustawienie silnego, długiego hasła – najlepiej losowego, wygenerowanego przez manager haseł. Proponuję wybrać hasło o długości nawet 64 znaków, składające się z małych i wielkich liter, cyfr oraz znaków specjalnych. Dzięki managerowi haseł nie musisz go pamiętać, a Twoje konto jest znacznie bezpieczniejsze przed atakami.
Pamiętaj: Słabe, powtarzalne lub krótkie hasła to zaproszenie dla cyberprzestępców!
Opis opcji sekcji „Web Limits” w ISPConfig
- Webservers: Serwer WWW, na którym będą zakładane strony klienta. Zazwyczaj do wyboru masz zdefiniowane wcześniej serwery w panelu.
- Max. number of web domains: Maksymalna liczba domen, które klient może dodać. Wartość
-1
oznacza brak limitu. - Web Quota: Limit przestrzeni dyskowej na pliki stron WWW klienta (w MB).
-1
= bez limitu. - Traffic Quota: Limit miesięcznego transferu danych (w MB) dla wszystkich stron klienta.
-1
= brak limitu. - PHP Options: Możesz włączyć/wyłączyć PHP oraz wybrać tryb działania (np. PHP-FPM, Disabled). Ważne dla bezpieczeństwa i wydajności.
- CGI available: Czy klient może uruchamiać skrypty CGI (zazwyczaj wyłączone ze względów bezpieczeństwa).
- SSI available: Pozwala na używanie Server Side Includes.
- Perl available / Ruby available / Python available: Dostępność tych języków dla stron klienta.
- SuEXEC forced: Wymusza uruchamianie skryptów z uprawnieniami użytkownika domeny, zwiększa bezpieczeństwo.
- Custom error docs available: Czy można definiować własne strony błędów (np. 404.html).
- Wildcard subdomain available: Umożliwia obsługę subdomen typu *.twojadomena.pl.
- SSL available: Czy klient może aktywować SSL na swoich stronach (https).
- Let’s Encrypt available: Umożliwia generowanie darmowych certyfikatów SSL Let’s Encrypt dla stron klienta.
- Max. number of web aliasdomains: Maksymalna liczba domen aliasów (np. dodatkowe domeny wskazujące na tę samą stronę).
- Max. number of web subdomains: Maksymalna liczba subdomen na stronach klienta.
- Max. number of FTP users: Limit liczby użytkowników FTP dla klienta.
- Max. number of Shell users: Liczba użytkowników z dostępem do SSH (zazwyczaj 0 dla bezpieczeństwa).
- SSH-Chroot Options: Określa, czy użytkownicy SSH są ograniczeni (chroot) do swojego katalogu domowego („Jailkit”).
- Max. number of Webdav users: Limit liczby użytkowników WebDAV.
- Backupfunction available: Czy klient może wykonywać własne kopie zapasowe z poziomu panelu.
- Show web server config selection: Pozwala klientowi wybierać dodatkowe opcje konfiguracji serwera WWW (dla zaawansowanych).
Opis opcji sekcji „Email Limits” w ISPConfig
- Mailservers: Serwer poczty, na którym obsługiwane będą skrzynki i domeny pocztowe klienta.
- Max. number of email domains: Maksymalna liczba domen e-mail, które może utworzyć klient (
-1
= bez limitu). - Max. number of mailboxes: Maksymalna liczba skrzynek pocztowych dla klienta (
-1
= bez limitu). - Max. number of email aliases: Limit aliasów e-mail (np. dodatkowych adresów przekierowujących do skrzynki).
- Max. number of domain aliases: Liczba aliasów domeny e-mail (czyli dodatkowych domen przypisanych do tej samej poczty).
- Max. number of mailing lists: Limit list mailingowych (grupowa wysyłka wiadomości).
- Max. number of email forwarders: Maksymalna liczba przekierowań e-mail (forwardów).
- Max. number of email catchall accounts: Liczba kont „catchall”, odbierających wszystkie wiadomości wysyłane na nieistniejące adresy w domenie.
- Max. number of email routes: Liczba tras routingu e-maili (zaawansowane – przekierowywanie poczty na inne serwery według reguł).
- Max. number of email white / blacklist entries: Maksymalna liczba pozycji na białej/czarnej liście dla danego klienta.
- Max. number of email filters: Limit filtrów e-mail (np. do automatycznego sortowania lub oznaczania poczty).
- Max. number of fetchmail accounts: Liczba zewnętrznych kont (fetchmail) – pobieranie poczty z innych serwerów.
- Mailbox quota: Limit rozmiaru skrzynki pocztowej (w MB).
-1
= bez limitu. - Max. number of spamfilter white / blacklist filters: Liczba reguł białej/czarnej listy w filtrze antyspamowym.
- Max. number of spamfilter users: Liczba użytkowników mających własne ustawienia antyspamu.
- Max. number of spamfilter policies: Liczba polityk (zestawów reguł) antyspamowych.
- E-mail backup function available: Czy klient może samodzielnie tworzyć kopie zapasowe poczty przez panel.
Tworzenie użytkownika bazy danych dla strony – ISPConfig
Po utworzeniu klienta i ustaleniu limitów, kolejnym krokiem jest stworzenie osobnego użytkownika bazy danych dla nowej strony (np. solutionsinc.co.uk). W tym celu przechodzimy do zakładki Sites, a następnie do sekcji zarządzania bazami danych.
- Wybierz klienta z listy (np. SolutionsInc).
- Wprowadź nazwę użytkownika bazy danych – ISPConfig automatycznie sugeruje prefiks powiązany z klientem (np. c2_). Dzięki temu każdy użytkownik jest unikalny i łatwy do zidentyfikowania.
- Ustaw hasło do bazy danych. Skorzystaj z przycisku Generate Password i wybierz długie, losowe hasło (najlepiej przechowywane w menedżerze haseł). Silne hasło to podstawa bezpieczeństwa, nawet jeśli nie musisz go zapamiętywać.
- Powtórz hasło w polu „Repeat Password”.
- Kliknij Save, aby utworzyć użytkownika.
Tworzenie oddzielnych użytkowników do każdej strony to ważny krok – jeśli dojdzie do wycieku hasła, atak ogranicza się tylko do jednej bazy. Dzięki temu nawet poważny błąd w aplikacji nie daje napastnikowi dostępu do innych danych na serwerze.
Opis opcji zakładki „Domain” przy tworzeniu strony WWW w ISPConfig
- Server: Serwer WWW, na którym będzie hostowana domena. Wybierz odpowiedni serwer z listy dostępnych.
- Client: Klient, do którego przypisana będzie ta domena/strona.
- IPv4-Address: Adres IPv4 przypisany do tej domeny (domyślnie *, czyli dowolny dostępny IP na serwerze).
- IPv6-Address: Adres IPv6, jeśli jest używany (opcjonalnie).
- Domain: Nazwa domeny, którą chcesz dodać (np. solutionsinc.co.uk).
- Harddisk Quota: Limit przestrzeni dyskowej dla tej konkretnej strony (w MB).
-1
oznacza brak limitu. - Traffic Quota: Limit transferu danych dla tej strony (w MB miesięcznie).
-1
oznacza brak limitu. - CGI: Czy zezwolić na uruchamianie skryptów CGI na stronie (zazwyczaj wyłączone dla bezpieczeństwa).
- SSI: Czy włączyć obsługę Server Side Includes.
- Own Error-Documents: Pozwala na ustawianie własnych stron błędów (np. 404.html).
- Auto-Subdomain: Domyślna subdomena, która zostanie automatycznie dodana (najczęściej www).
- SSL: Zaznacz jeśli posiadasz własny certyfikat SSL i chcesz ręcznie wgrać certyfikaty do panelu.
- Let’s Encrypt SSL: Wybierz tę opcję, jeśli chcesz, aby ISPConfig automatycznie wygenerował darmowy certyfikat SSL Let’s Encrypt dla tej domeny (nie musisz posiadać własnych certyfikatów).
- PHP: Wybierz tryb działania PHP dla strony. Jeśli zamierzasz używać Nginx jako Reverse Proxy dla OpenLiteSpeed, wybierz koniecznie PHP-FPM oraz dokładnie tę wersję PHP, na której działa OLS. Pozostałe tryby (np. Disabled) nie będą poprawnie współpracować z takim rozwiązaniem.
- Web server config: Dodatkowe opcje konfiguracyjne serwera WWW (zaawansowane, można zostawić domyślnie).
- Active: Czy strona ma być aktywna (zaznaczona domyślnie – strona po zapisaniu będzie działać).
Opis opcji zakładki „Redirect” w ISPConfig (Reverse Proxy)
- Redirect Type: Określa rodzaj przekierowania dla danej domeny. Jeśli chcesz skonfigurować Nginx jako reverse proxy dla OpenLiteSpeed, koniecznie ustaw tutaj opcję proxy. Dzięki temu ruch HTTP/S będzie przekazywany do właściwego backendu (OLS).
- Redirect Path: Adres docelowy (URL/backend), do którego ma być przekazywany ruch. W przypadku reverse proxy wpisz tutaj adres backendu (np. http://127.0.0.1:8088/ – pamiętaj, żeby nie używać portu 8080, ponieważ jest on zajęty przez ISPConfig!).
- SEO Redirect: Opcjonalne przekierowania SEO (np. 301, 302, non-www→www). Najczęściej pozostawiamy jako „No redirect”, chyba że masz specyficzne wymagania SEO.
- Rewrite Rules: Pole na własne reguły rewrite, zgodne z modułem nginx_http_rewrite_module. Możesz tu dodawać dodatkowe instrukcje modyfikujące ruch HTTP, np. break, if, return, rewrite, set (pełna lista na stronie nginx).
- Rewrite HTTP to HTTPS: Po zaznaczeniu automatycznie przekierowuje cały ruch z HTTP na HTTPS. Zalecane przy stronach wymagających SSL.
Uwaga: Pamiętaj, że w przypadku konfiguracji reverse proxy kluczowe jest ustawienie Redirect Type na proxy i prawidłowe podanie backendu w Redirect Path.
Zakładka SSL w ISPConfig – co tutaj ustawić?
- Jeśli w zakładce Domain zaznaczyłeś opcję Let’s Encrypt SSL, nie musisz tutaj nic wypełniać. Certyfikat zostanie wygenerowany automatycznie i pola pozostaną puste.
- Jeśli korzystasz z własnych certyfikatów SSL, wklej je odpowiednio do poniższych pól:
- SSL Key: Klucz prywatny (private key)
- SSL Request: Żądanie podpisania certyfikatu (CSR) – opcjonalne, jeśli go używasz
- SSL Certificate: Właściwy certyfikat SSL (publiczny)
- SSL Bundle: Certyfikaty pośrednie/CA Bundle (jeśli wymaga tego Twój dostawca SSL)
- SSL Domain: Domena, dla której generowany/instalowany jest certyfikat (wypełnia się automatycznie)
- SSL Action: Domyślnie „Save certificate” – zachowuje wprowadzone dane
Wskazówka: Jeśli zmieniasz typ certyfikatu (np. przechodzisz z własnego certyfikatu na Let’s Encrypt lub odwrotnie), pamiętaj, by odznaczyć zbędne opcje w zakładce Domain i zapisać zmiany.
Zakładka Statistics w ISPConfig – własne statystyki dla Twojej strony
Jeśli chcesz mieć niezależny system statystyk strony (poza tym, co oferuje np. WordPress czy Google Analytics), ta zakładka jest dla Ciebie. Tutaj możesz skonfigurować, jaki program będzie generował i prezentował szczegółowe statystyki ruchu na Twojej stronie. Oto krótkie opisy dostępnych opcji:
- AWStats: Najpopularniejszy program do generowania szczegółowych statystyk www. Analizuje logi serwera i prezentuje czytelne wykresy, podsumowania ruchu, popularność stron, źródła odwiedzin, wyszukiwane frazy i inne dane. Interfejs webowy, obsługa wielu języków.
- GoAccess: Nowoczesny analizator logów działający w czasie rzeczywistym, także z interfejsem webowym. Bardzo szybki, daje czytelne podsumowania najważniejszych danych (unikalni użytkownicy, najpopularniejsze strony, kody błędów itp.). Może być bardziej „techniczny” od AWStats.
- Webalizer: Starszy, ale bardzo lekki i szybki program do analizy logów. Prezentuje podstawowe statystyki ruchu, wykresy godzinowe/dniowe, listę najczęściej odwiedzanych stron, ale z mniejszą ilością szczegółów niż AWStats.
- None: Brak statystyk. Przydatne jeśli korzystasz wyłącznie z zewnętrznych rozwiązań lub chcesz ograniczyć zużycie zasobów.
Wskazówka: Pamiętaj, by ustawić hasło do panelu statystyk, jeśli chcesz, by dostęp był chroniony!
Zakładka Backup – Twoja sieć bezpieczeństwa (i spokój ducha)
W tej zakładce możesz ustawić automatyczne kopie zapasowe strony i bazy danych lub wykonać backup ręcznie, gdy tylko masz na to ochotę (albo poczujesz przypływ zdrowego rozsądku).
Dostępne opcje:
- Backup interval: Jak często wykonywać kopie (np. codziennie, co tydzień, co miesiąc, lub wcale – nie polecam tej ostatniej opcji!).
- Number of backup copies: Ile ostatnich backupów przechowywać na serwerze.
- Excluded Directories: Katalogi, które mają być pomijane w backupie (np. cache lub katalogi z danymi tymczasowymi).
- Compression options: Możesz skompresować swoje backupy, żeby nie zajmowały pół serwera – polecam!
- Encryption options: Możesz zaszyfrować kopie zapasowe – dzięki temu nawet jeśli backup trafi w niepowołane ręce, Twoje dane pozostaną bezpieczne.
Ręczny backup: Dwa magiczne przyciski – zrób backup bazy lub plików jednym kliknięciem.
Anegdota: Są dwa typy ludzi: ci, którzy robią backupy, i ci, którzy dopiero będą je robić po pierwszym poważnym krachu. Szkoda, że ta lekcja zawsze przychodzi za późno!
Zakładka Options – kluczowa dla Reverse Proxy (Nginx → OLS)
Jeśli używasz Nginx jako Reverse Proxy dla OpenLiteSpeed (lub innego backendu), koniecznie skonfiguruj odpowiednie nagłówki w polu Proxy Directives. Wklej tam poniższe linie:
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;
Dlaczego to ważne?
- proxy_set_header Host $host;
Przekazuje oryginalną nazwę hosta (domeny), pod jaką użytkownik wszedł na stronę. Dzięki temu backend (OLS) wie, dla jakiej domeny przetwarza żądanie i poprawnie rozpoznaje wirtualne hosty. - proxy_set_header X-Real-IP $remote_addr;
Przekazuje prawdziwy adres IP klienta, a nie adres serwera proxy. Dzięki temu w logach, statystykach oraz przy mechanizmach bezpieczeństwa widoczny jest rzeczywisty użytkownik. - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Dodaje oryginalny adres IP klienta do specjalnego nagłówka X-Forwarded-For. Przydatne jeśli ruch przechodzi przez kilka proxy – można odtworzyć całą „trasę” zapytania. - proxy_set_header X-Forwarded-Proto $scheme;
Informuje backend, czy oryginalne żądanie było po HTTPS czy HTTP. Dzięki temu aplikacje mogą generować poprawne linki zwrotne (np. z https:// zamiast http://).
Podsumowanie:
Bez tych nagłówków backend (OLS) nie będzie wiedział, kto naprawdę odwiedza Twoją stronę, pod jaką domeną, i czy używa HTTPS. Skutki mogą być poważne: błędne logi, niepoprawne generowanie linków, problemy z SSL, a nawet luki w bezpieczeństwie.
Ostatni krok: konfiguracja OpenLiteSpeed pod Reverse Proxy
Gdy wszystkie ustawienia po stronie ISPConfig są gotowe, przechodzimy do panelu OpenLiteSpeed, który znajdziesz pod adresem http://IP_SERWERA:7080
.
Co robimy:
- Przechodzimy do sekcji Listeners.
- Usuwamy wszystkie listenery poza
Listener Default
na porcie 8088 (to na nim OLS będzie „słuchał” żądań od Nginx Reverse Proxy). - Klikamy w ikonkę lupki przy naszym Listenerze i przechodzimy do sekcji Virtual Host Mappings.
- Dodajemy mapping dla naszej strony, np.
solutionsinc.co.uk
(lub innej, którą podajesz w ISPConfig).
Dlaczego tak?
- Zarządzaniem SSL (wystawianiem, odnawianiem, przekierowaniami itp.) zajmuje się teraz Nginx wraz z ISPConfig, więc nie trzeba już konfigurować SSL w OLS.
- Pozostałe zakładki listenery mogą zostać bez zmian – cała magia dzieje się teraz po stronie reverse proxy.
Podsumowanie:
Od tej pory Nginx przejmuje na siebie cały ruch (w tym HTTPS), a do OLS przekazuje już czyste żądania na lokalnym porcie (8088). To idealne połączenie wydajności, wygody i bezpieczeństwa.
Virtual Hosts > Basic w OpenLiteSpeed – jak poprawnie uzupełnić?
- Virtual Host Name: Nazwa hosta wirtualnego – wpisz nazwę domeny, np.
solutionsinc.co.uk
. - Virtual Host Root: Wpisz tu dokładnie taki adres, jak w polu Document Root w ISPConfig (np.
/var/www/clients/client1/web1/
), pamiętając o końcowym slashem/
. Dzięki temu OLS będzie serwował pliki z właściwej lokalizacji. - Config File: Wpisz bashKopiujEdytuj
$SERVER_ROOT/conf/vhosts/$VH_NAME/vhost.conf
Podczas próby zapisu OLS zgłosi, że taki plik nie istnieje – kliknij wtedy w link pod polem, aby ten plik utworzyć automatycznie. Po tej operacji będzie można zapisać ustawienia bez błędów. - suEXEC User i suEXEC Group:
Wybierz tutaj dokładnie tego użytkownika i grupę, jakie ISPConfig utworzył dla Twojej domeny. Możesz to sprawdzić w ISPConfig w zakładce Sites > Website > Options.
To bardzo ważne – pozwala OLS uruchamiać skrypty PHP z prawidłowymi uprawnieniami, poprawia bezpieczeństwo i chroni przed dostępem do plików innych użytkowników. - External App Set UID Mode: Wybierz opcję DocRoot UID. Dzięki temu zewnętrzne aplikacje (np. PHP) będą uruchamiane jako użytkownik powiązany z katalogiem domeny.
- W sekcji Security znajdują się opcje kluczowe dla bezpieczeństwa i poprawnego działania hosta wirtualnego. Każdą z tych opcji ustaw na Yes:
- Follow Symbolic Link:
Pozwala OLS na podążanie za linkami symbolicznymi w katalogu strony. Jest to wymagane np. przez niektóre aplikacje, frameworki lub podczas aktualizacji oprogramowania. - Enable Scripts/ExtApps:
Umożliwia uruchamianie skryptów (np. PHP) oraz zewnętrznych aplikacji. Bez tej opcji Twoja strona nie będzie mogła przetwarzać PHP ani korzystać z dynamicznych funkcji. - Restrained:
Włącza „tryb ograniczony” – zwiększa bezpieczeństwo, ograniczając możliwości wywoływania pewnych poleceń systemowych przez hosta wirtualnego. - Pamiętaj:
- Ustawienie każdej z tych opcji na Yes jest niezbędne do poprawnej i bezpiecznej pracy Twojej strony przy współpracy z ISPConfig i reverse proxy.
- Follow Symbolic Link:
Zakładka General – OpenLiteSpeed Virtual Host
Najważniejsze opcje:
- Document Root:
Katalog, w którym znajduje się Twoja strona. Tu wklejasz ścieżkę z ISPConfig (Sites → Website → Document Root) i na końcu dodajesz katalog strony, zazwyczaj/web/
, czyli np./var/www/clients/client1/web1/web/
. Zawsze sprawdzaj tę ścieżkę w ISPConfig, bo może się różnić!
Pozostałe opcje:
- Domain Name:
(Opcjonalnie) Możesz wpisać główną domenę tego vhosta. - Domain Aliases:
Inne domeny, które mają wskazywać na tego vhosta (np. wersje z www i bez www). - Administrator Email:
E-mail administratora tej strony (przydatny do powiadomień o błędach). - Enable GZIP Compression:
Włącza kompresję GZIP na poziomie serwera – przyspiesza ładowanie strony. - Enable Brotli Compression:
Alternatywna metoda kompresji (jeszcze wydajniejsza niż GZIP). - Enable GeoLocation Lookup:
Pozwala serwerowi sprawdzać, z jakiego kraju pochodzi użytkownik (np. do statystyk). - cgroups:
Opcjonalne ograniczenia zasobów dla vhosta – jeśli chcesz limity CPU/RAM.
Sekcja Index Files:
- Use Server Index Files:
Powinno być ustawione na „No”, aby OLS używał plików indeksowych zdefiniowanych poniżej, a nie globalnych z serwera. - Index Files:
Lista nazw plików, które mają być traktowane jako plik startowy strony (np.index.php
,index.html
). Jeśli oba istnieją, pierwszy z listy zostanie użyty. - Auto Index:
Pozwala na automatyczne generowanie indeksu katalogu, jeśli nie ma pliku index (zalecane „Not Set”/wyłączone ze względów bezpieczeństwa). - Auto Index URI:
Pozwala wskazać adres, pod którym wyświetli się automatyczny indeks katalogu.
Customized Error Pages:
- Tutaj możesz podać własne strony błędów (np. 404, 500).
Expires Settings:
- Enable Expires, Expires Default, Expires By Type:
Kontrolują cache’owanie plików przez przeglądarki (możesz ustawić, jak długo przeglądarka ma trzymać pliki statyczne). Najczęściej zostawiamy domyślnie i konfigurujemy cache przez .htaccess lub w ustawieniach aplikacji.
File Upload:
- Temporary File Path, Temporary File Permission, Pass Upload Data by File Path:
Zaawansowane ustawienia dot. przesyłania plików – gdzie zapisywane są pliki tymczasowe, jakie mają uprawnienia, i czy dane przesyłane są przez ścieżkę pliku (raczej zostaw domyślnie).
php.ini Override:
- Pozwala podać własne ustawienia PHP tylko dla tego vhosta – jeśli nie musisz zmieniać limitów (np. upload_max_filesize), zostaw puste.
Zakładka Log – niezależne logi dla każdej witryny
Dlaczego warto ustawić osobne logi?
- Izolacja: Osobne logi dla każdej strony ułatwiają zarządzanie, rozwiązywanie problemów oraz audyt – nie musisz szukać swojej witryny w jednym wielkim pliku wspólnym dla całego serwera.
- Bezpieczeństwo: Jeżeli masz kilka klientów lub projektów, osobne logi ograniczają dostęp tylko do niezbędnych danych i pomagają zachować porządek.
- Łatwiejsza analiza: Szybciej wykryjesz, co dzieje się na danej stronie, np. ataki, błędy, czy nieprawidłowe żądania.
Virtual Host Log (log błędów)
- Use Server’s Log:
Jeśli ustawisz na „No”, logi błędów będą prowadzone oddzielnie dla tej strony. Zalecane, bo błędy konkretnej witryny nie zginą wśród błędów innych projektów. - File Name:
Ścieżka do pliku logu błędów tej strony (np./var/www/clients/client1/solutionsinc.co.uk/log/error.log
). Umieszczenie w katalogu domeny ułatwia zarządzanie backupem i dostępem. - Log Level:
Poziom szczegółowości logów (DEBUG
,INFO
,NOTICE
,WARN
,ERROR
,CRIT
).DEBUG
to najwięcej szczegółów – przydatne przy debugowaniu, ale do codziennego działania wystarczyWARN
lubERROR
. - Rolling Size (bytes):
Maksymalny rozmiar pliku logów, po przekroczeniu którego utworzony zostanie nowy plik (np. 10M). Chroni dysk przed zapchaniem. - Keep Days:
Ile dni przechowywać stare logi – przydatne do audytu lub cofania się do przeszłych incydentów. - Compress Archive:
Czy archiwizować i kompresować stare logi. Zalecane przy dużej liczbie logów, pozwala oszczędzić miejsce na dysku.
Access Log (log dostępu)
- Log Control:
Wybierz „Own Log File”, by każdy vhost miał własny plik logu dostępu. Dzięki temu łatwiej analizować ruch na konkretnych stronach. - File Name:
Ścieżka do logu dostępu (np./var/www/clients/client1/
).solutionsinc.co.uk
/log/access_log - Piped Logger:
Zaawansowana opcja – logi mogą być przetwarzane „w locie” przez zewnętrzne programy. Zostaw puste jeśli nie używasz. - Log Format:
Format pojedynczego wpisu logu – domyślna opcja sprawdza się w większości przypadków, ale możesz dostosować pod potrzeby analizy. - Log Headers:
Zaznacz „Referrer”, „UserAgent”, „Host” – dzięki temu logi będą zawierały kluczowe informacje o odwiedzających, źródłach wejść i typach urządzeń. - Rolling Size (bytes):
Jak duży może być pojedynczy plik logu, zanim zacznie się tworzyć kolejny (np. 50M). - Keep Days:
Ile dni przechowywać logi dostępu (np. 365 – pełen rok historii). - Compress Archive:
Warto ustawić na „Yes”, by stare logi były automatycznie kompresowane. - Bytes log:
Opcjonalnie: plik, w którym zapisywana jest statystyka przesłanych bajtów (raczej dla zaawansowanych analiz).
Zalecane ustawienia:
- Dla produkcji ustaw Log Level na
WARN
lubERROR
, a na czas uruchamiania i testów –DEBUG
. - Zawsze kompresuj archiwalne logi.
- Przechowuj logi co najmniej 30 dni – najlepiej 90 lub więcej, jeśli masz miejsce.
- Dla Access Log: zawsze osobny plik per domena, zawsze z Referrer, UserAgent i Host.
Zakładka Security – opis wszystkich opcji
Uwaga:
Nie musisz konfigurować tych ustawień, aby uruchomić stronę przez Nginx jako Reverse Proxy!
Jeśli nie masz doświadczenia z zaawansowaną ochroną i kontenerami – najlepiej najpierw uruchomić stronę, upewnić się że wszystko działa, a dopiero potem wracać tutaj i testować poszczególne opcje.
Sekcja: LS reCAPTCHA
- Enable reCAPTCHA, Site Key, Secret Key, reCAPTCHA Type, Max Tries, Concurrent Request Limit
Pozwala aktywować mechanizmy reCAPTCHA (ochrona przed botami i atakami brute force na poziomie serwera). Trzeba podać klucze z Google oraz ustawić limity prób.
Praktyka: Tylko dla osób, które dokładnie wiedzą jak to działa – błędna konfiguracja może zablokować ruch na stronie.
Sekcja: Containers
- Bubblewrap Container
Pozwala uruchomić vhost w odizolowanym kontenerze z użyciem narzędzia Bubblewrap (większe bezpieczeństwo – aplikacje są „odcięte” od systemu).
Zaawansowana funkcja – nie zalecane dla początkujących. - Namespace Container, Additional Namespace Template File
Umożliwiają izolację hosta w osobnej przestrzeni nazw (namespace), dodatkowo zwiększając bezpieczeństwo, ale wymagają wiedzy o konteneryzacji w Linuksie.
Sekcja: Access Control
- Allowed List
Lista adresów IP, które mają mieć dostęp do tej strony. - Denied List
Lista adresów IP, które mają być zablokowane. Uwaga: Jeśli źle to skonfigurujesz, możesz nieświadomie zablokować dostęp do własnej strony!
Sekcja: Realm List
- Tutaj możesz skonfigurować „realm” – czyli strefy z własnym uwierzytelnianiem (np. ochrona katalogu hasłem na poziomie serwera).
Podsumowanie praktyczne
- Dla działania strony przez Nginx jako Reverse Proxy, NIE musisz nic tu ustawiać.
- Te opcje to narzędzia dla zaawansowanych administratorów – dla większości użytkowników najlepiej zostawić je domyślne, dopóki strona nie działa poprawnie.
- Zalecenie: Najpierw uruchom stronę, sprawdź poprawność, potem (opcjonalnie) wracaj do tej zakładki, jeśli chcesz podnieść poziom bezpieczeństwa.
Zakładka External App – opis i zalecenia
Ta zakładka odpowiada za powiązanie serwera www z interpreterem PHP, dzięki czemu twoje aplikacje PHP działają poprawnie.
Najważniejsze pola:
- Name:
Nazwa aplikacji zewnętrznej, np.solutionsinc.co.uk
. Może być dowolna, ale najlepiej ustawić nazwę zgodną z domeną dla porządku. - Address:
MUST HAVE!
Gniazdo komunikacji z interpreterem PHP, np.UDS:///tmp/lshttpd/solutionsinc.co.uk.sock
UDS (Unix Domain Socket) zawsze z dużej litery! Umożliwia szybszą i bezpieczniejszą komunikację niż połączenia sieciowe. - Notes:
Dowolny opis, jeśli potrzebujesz (opcjonalne). - Max Connections:
Maksymalna liczba równoczesnych połączeń do PHP. Zalecane 50, chyba że twoja strona obsługuje bardzo duży ruch – wtedy możesz zwiększyć. - Environment:
Dodatkowe zmienne środowiskowe. Przykład:LSAPI_CHILDREN=50
– ustala liczbę procesów potomnych PHP dla tej aplikacji. - Initial Request Timeout (secs):
Czas oczekiwania na odpowiedź przy pierwszym żądaniu (np. 600 sekund). Dłuższy czas jest bezpieczny przy wolniejszych serwerach lub długich skryptach. - Retry Timeout (secs):
Ile sekund serwer ma czekać i ponawiać próbę w przypadku błędu połączenia z PHP. - Persistent Connection:
Najlepiej zostawić „Yes” – pozwala na utrzymywanie otwartych połączeń i przyspiesza obsługę wielu żądań. - Connection Keep-Alive Timeout:
Jak długo (w sekundach) połączenie z PHP pozostaje otwarte po obsłużeniu żądania (domyślnie 1). - Response Buffering:
„No” oznacza natychmiastowe przekazywanie odpowiedzi do klienta. Zalecane dla stron dynamicznych. - Start By Server:
„Yes (Through CGI Daemon)” – serwer sam uruchamia proces PHP, co jest bezpieczniejsze i wygodniejsze. - Command:
KLUCZOWE!
Ścieżka do interpretera PHP, np./usr/local/lsws/lsphp83/bin/lsphp
Upewnij się, że ten plik istnieje i jest to właściwa wersja PHP, której używasz. Jak sprawdzić:
W konsoli serwera wpisz: bashKopiujEdytujls -l /usr/local/lsws/lsphp83/bin/lsphp
Jeśli plik istnieje – ścieżka jest OK. Jeśli nie – sprawdź czy masz zainstalowaną wersję PHP 8.3 przez LiteSpeed (np. przez menadżer LiteSpeed lub polecenielsphp
). - Back Log:
Maksymalna liczba żądań oczekujących na połączenie z PHP (zalecane 100). - Instances:
Liczba instancji aplikacji (w praktyce: ilość niezależnych procesów). Zwykle 1 – jeśli nie masz bardzo wymagającej aplikacji. - Run As User / Run As Group:
Muszą odpowiadać użytkownikowi i grupie zdefiniowanym w ISPConfig dla tej strony (np. web1/client1). Dzięki temu każdy vhost działa z uprawnieniami przypisanymi tylko do własnych plików, co znacznie podnosi bezpieczeństwo. - umask:
Maska uprawnień dla tworzonych plików – najczęściej zostawiamy puste. - Run On Start Up, Max Idle Time, Priority:
Zaawansowane opcje – zwykle nie wymagają zmiany. - Memory Soft Limit / Hard Limit:
Miękki i twardy limit RAM dla procesu PHP (w bajtach).
Zalecane: 2047M (2GB) – dostosuj do mocy serwera i potrzeb aplikacji. - Process Soft Limit / Hard Limit:
Ograniczenie liczby procesów (soft/hard).
Soft – ostrzeżenie, hard – blokada. Przykład: Soft 400, Hard 500.
Zakładka Script Handler – do czego służy?
Ta sekcja decyduje, jakie aplikacje mają obsługiwać określone typy plików skryptowych (np. PHP) na poziomie konkretnego Virtual Host. Bez poprawnego handlera, PHP nie zadziała!
Kluczowe opcje:
- Suffixes
Tu wpisujesz rozszerzenia plików, które mają być obsługiwane przez danego handlera.
W typowej konfiguracji wpisujesz po prostu: nginxKopiujEdytujphp
Dzięki temu wszystkie pliki z rozszerzeniem.php
będą analizowane przez PHP.
Suffix – co to jest i jak go ustawić?
Suffix określa, jakie rozszerzenia plików skryptowych będą obsługiwane przez dany Script Handler. Każdy suffix musi być unikalny w konfiguracji.
Składnia:
- Lista rozszerzeń oddzielona przecinkami, bez kropki („.” jest niedozwolona).
- Przykład: KopiujEdytuj
php,php83
Ważne uwagi (na podstawie dokumentacji OLS):
- Serwer automatycznie doda specjalny typ MIME (
application/x-httpd-[suffix]
) dla pierwszego sufiksu w tej liście.- Przykład: dla
php83
, zostanie dodany typ MIMEapplication/x-httpd-php83
.
- Przykład: dla
- Jeśli chcesz używać dodatkowych sufiksów (np.
php53,php74
), po pierwszym musisz dodać odpowiadające typy MIME ręcznie w ustawieniach MIME. - Choć pole „Suffix” wyświetla listę rozszerzeń, w praktyce handler korzysta z typów MIME, nie z samych sufiksów, aby zdecydować, które pliki obsłużyć.
- Podawaj tylko te rozszerzenia, których rzeczywiście używasz – nie wpisuj niepotrzebnych lub nieużywanych, by nie zwiększać ryzyka błędów lub ataków.
Przykład poprawnej konfiguracji:
Jeśli chcesz obsługiwać tylko pliki .php
:
php
Jeśli chcesz obsługiwać również .php83
:
php,php83
Pamiętaj, aby dla dodatkowych sufiksów dodać odpowiedni typ MIME w ustawieniach serwera!
- Handler Type
Typ obsługiwacza skryptów.
LiteSpeed SAPI to natywny, najwydajniejszy sposób obsługi PHP w OpenLiteSpeed – pozwala na bezpośrednią i szybką komunikację z interpreterem PHP, korzystając z ustawień z zakładki External App. - Handler Name
Wybierasz tu powiązaną aplikację zdefiniowaną w zakładce External App.
Jeśli masz kilku Virtual Hostów, możesz mieć kilka różnych wersji PHP lub różnych konfiguracji.
Uwaga:
Warto, żeby tu było[VHost Level]: solutionsinc.co.uk
– czyli handler, który został utworzony dla tej konkretnej strony.
Dlaczego to ważne?
- Bez poprawnego powiązania PHP z właściwym handlerem, serwer nie będzie wiedział, jak uruchamiać twoje pliki
.php
(może pobierać je jako pliki tekstowe zamiast wykonywać kod!). - Wybór LiteSpeed SAPI gwarantuje najlepszą wydajność, bezpieczeństwo i obsługę nowoczesnych funkcji PHP.
- Jeśli masz kilka stron i każda ma inne wymagania (np. jedna działa na PHP 8.3, druga na PHP 8.1), możesz tu przypisać do każdej Virtual Host odpowiednią wersję interpreter PHP.
Zakładka Rewrite – do czego służy?
Zakładka Rewrite pozwala na zarządzanie regułami przepisywania URL-i (tzw. „mod_rewrite”), dzięki którym możesz:
- Tworzyć przyjazne adresy URL (np. w WordPress, Prestashop, Laravel).
- Wymuszać przekierowania (np. http→https, non-www→www).
- Realizować niestandardowe logiki przepisywania (np. maskowanie folderów, obsługa aliasów domen).
Opis pól
Rewrite Control
- Enable Rewrite
Włącza obsługę mechanizmu przepisywania (mod_rewrite) dla tego Virtual Host.
Ważne: Bez tego żadne reguły z.htaccess
ani wpisy w „Rewrite Rules” nie będą działać! - Auto Load from .htaccess
Pozwala automatycznie ładować reguły rewrite z plików.htaccess
znajdujących się w katalogach twojej strony.
Ważne:- Dla WordPressa i większości popularnych CMS-ów koniecznie musi być „Yes”.
- Jeśli chcesz mieć większą kontrolę nad wydajnością, możesz reguły rewrite wpisać bezpośrednio w „Rewrite Rules”, wtedy to pole można wyłączyć.
- Log Level
- Określa poziom szczegółowości logów debugowania mechanizmu rewrite.
- Zakres wartości: 0–9
- 0 – wyłącza logowanie rewrite (brak logów).
- 9 – najbardziej szczegółowe logi debugowania.
- Im wyższa liczba, tym więcej szczegółowych informacji o działaniach reguł rewrite pojawi się w logach serwera.
- Aby opcja działała, logi błędów serwera i/lub Virtual Host muszą mieć poziom co najmniej INFO.
- Przydatne przy testowaniu i rozwiązywaniu problemów z regułami rewrite.
- Syntax: Liczba całkowita z zakresu 0–9.
Rewrite Map
Możliwość zdefiniowania map przepisywania (zaawansowane – np. do dynamicznych przekierowań na podstawie wzorców lub plików).
- Dla większości użytkowników niewymagane.
Rewrite Rules
Miejsce na ręczne wpisanie reguł mod_rewrite (w stylu Apache).
Przykład:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Reguły tutaj mają wyższy priorytet niż te z .htaccess
.
Dlaczego to ważne?
- Bez rewrite wiele aplikacji nie będzie działać poprawnie (brak przyjaznych linków, błędy 404).
- Automatyczne ładowanie z .htaccess pozwala korzystać z gotowych .htaccess od popularnych CMS-ów.
- Ręczne reguły przydają się, gdy potrzebujesz pełnej kontroli lub lepszej wydajności.
Zakładka Context – wszystkie pola
1. URI
- Opis: Ścieżka (URI) katalogu lub podkatalogu, dla którego tworzysz ten kontekst.
- Kluczowe! Musi dokładnie odpowiadać folderowi, gdzie znajduje się Twoja strona (np.
/web/
dla katalogu/var/www/clients/client1/web1/web/
). - Uwaga: Jeśli URI kończy się na
/
, wszystkie podkatalogi są również objęte tym kontekstem. Jeśli twoja strona jest w katalogu głównym, wpisz po prostu/
.
2. LSAPI App
- Opis: Wybierasz aplikację LiteSpeed SAPI (np. PHP) powiązaną z tym kontekstem. Lista rozwijana zawiera aplikacje zdefiniowane w External App.
- Dlaczego ważne? To łączy obsługę PHP (lub innego języka) z Twoją stroną. Bez tego, PHP nie będzie działać w tym katalogu!
3. Notes
- Opis: Pole informacyjne, możesz tu wpisać własne notatki.
- Wskazówka: Użyteczne przy większych instalacjach lub testach, ale pole nie jest obowiązkowe.
4. Header Operations
- Opis: Dodatkowe operacje na nagłówkach odpowiedzi HTTP (np. ustawianie, dodawanie, kasowanie nagłówków).
- Składnia: Zbliżona do Apache mod_headers.
- Przykład: pgsqlKopiujEdytuj
set Cache-control no-cache append Cache-control no-store
- Wskazówka: Przydatne, gdy chcesz sterować cache’owaniem lub bezpieczeństwem na poziomie katalogu.
5. Realm / Authentication Name / Require (Authorized Users/Groups) / Access Allowed / Access Denied / Authorizer
- Opis: Opcje autoryzacji dostępu do danego katalogu (możesz tu ustawić prostą ochronę hasłem, dostęp tylko dla wybranych grup/użytkowników).
- Wskazówka: Domyślnie zostawiasz puste. Stosujesz, jeśli chcesz ograniczyć dostęp do panelu admina, katalogu testowego itp.
6. Add Default Charset
- Opis: Określa, czy domyślny zestaw znaków ma być dodany do odpowiedzi HTTP.
- Domyślnie: Off
- Ustaw, jeśli: Masz stronę o nietypowym kodowaniu lub chcesz wymusić np. UTF-8.
7. Customized Default Charset
- Opis: Pozwala wskazać własny domyślny zestaw znaków (np. UTF-8, ISO-8859-2).
- Ustaw, jeśli: Potrzebujesz specyficznego kodowania znaków.
8. Enable GeoLocation Lookup
- Opis: Pozwala włączyć sprawdzanie lokalizacji geograficznej użytkowników na podstawie IP.
- Wskazówka: Zostaw domyślnie wyłączone, chyba że tworzysz stronę z personalizacją wg kraju.
Dlaczego ta zakładka jest ważna?
- Dzięki Context możesz precyzyjnie ustawić, jak serwer ma obsługiwać wybrane katalogi/podkatalogi, np. wybrać inną wersję PHP dla
/admin/
, zabezpieczyć panel logowania, zmienić nagłówki bezpieczeństwa tylko w jednym folderze. - URI to absolutna podstawa – błędne ustawienie tej ścieżki sprawi, że ustawienia nie zadziałają!
- Dzięki temu masz elastyczność niedostępną w prostych hostingach.
Podsumowanie
Po wykonaniu wszystkich powyższych kroków – od konfiguracji ISPConfig, przez ustawienie Nginx jako reverse proxy, po precyzyjne dobranie opcji w OpenLiteSpeed – Twoja strona WordPress lub dowolna inna aplikacja powinna działać jak złoto. Oczywiście pod warunkiem, że nie zapomniałeś o poprawnych rekordach DNS (np. w CloudFlare) – bez nich nawet najpiękniej skonfigurowany serwer będzie świecił pustkami jak lodówka po sesji!
Jeśli wszystko śmiga, gratulacje – możesz teraz spokojnie napić się herbaty, bo Twój serwer właśnie wszedł na wyższy poziom! Jeśli coś nie działa… cóż, sprawdź jeszcze raz DNS, logi oraz to, czy przypadkiem nie wpadłeś na pomysł zrobienia wszystkiego o 3 w nocy. Powodzenia!