Generator Apache VirtualHost
Złóż kompletny blok VirtualHost dla domeny, HTTPS i PHP-FPM i wgraj go do sites-available.
-
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 Apache VirtualHost — domena, PHP-FPM i HTTPS w jednym pliku
Generator Apache VirtualHost składa gotowy blok <VirtualHost>, w którym domena dostaje własny DocumentRoot, sekcję <Directory>, przekazanie PHP do PHP-FPM oraz osobne logi. Po włączeniu SSL powstaje blok na porcie 443 z certyfikatem i drugi na porcie 80, który przekierowuje ruch na HTTPS.
Co dokładnie robi to narzędzie
Podajesz domenę, DocumentRoot, adres administratora, port oraz gniazdo PHP-FPM i dostajesz kompletny plik konfiguracyjny. Pierwsza linia to <VirtualHost *:80> albo <VirtualHost *:443>, zależnie od SSL. Dalej trafiają ServerName i ServerAlias www., więc witryna odpowiada z prefiksem i bez niego. Domenę sprawdzamy pod kątem poprawnej nazwy DNS, a DocumentRoot musi być ścieżką bezwzględną — te wartości trafiają wprost do konfiguracji serwera.
VirtualHost to warstwa wyżej niż plik .htaccess. Regułę katalogową czy przekierowanie ułożysz w generatorze pliku .htaccess, a dostęp hasłem dołożysz wpisem z generatora .htpasswd.
Sekcja Directory i błąd 403
Najczęstsza przyczyna błędu 403 Forbidden na świeżo wystawionej stronie to brak Require all granted w bloku <Directory>. Apache od 2.4 domyślnie odmawia dostępu do katalogów, o które nie poprosisz jawnie. Dlatego narzędzie wstawia trzy dyrektywy: Options -Indexes +FollowSymLinks wyłącza listowanie katalogu, AllowOverride All pozwala odczytać reguły z .htaccess, a Require all granted otwiera zasób dla klientów. Bez tej ostatniej linii serwer odpowie 403.
Kluczowe dyrektywy w wygenerowanym pliku
| Dyrektywa | Za co odpowiada |
|---|---|
ServerName / ServerAlias | Główna domena i nazwa www., po których Apache dopasowuje żądanie |
DocumentRoot | Katalog serwowanych plików (dla Laravela: public) |
<Directory> | Uprawnienia katalogu, w tym Require all granted |
<FilesMatch> | Przekazanie plików .php do PHP-FPM przez SetHandler |
SSLCertificate* | Ścieżki do fullchain.pem i privkey.pem |
ErrorLog / CustomLog | Osobne logi błędów i dostępu dla domeny |
SSL, port 443 i przekierowanie z HTTP
Certyfikat SSL działa tylko w bloku nasłuchującym na porcie 443, nie na 80. Dlatego po zaznaczeniu SSL narzędzie kieruje główny blok na *:443, wstawia SSLEngine on oraz ścieżki SSLCertificateFile i SSLCertificateKeyFile do katalogu Let's Encrypt /etc/letsencrypt/live/. Powstaje też krótki blok <VirtualHost *:80>, który przez RewriteRule przekierowuje ruch HTTP na HTTPS z kodem 301. Ważność certyfikatu potwierdzisz w weryfikatorze certyfikatu SSL, a nagłówki bezpieczeństwa złożysz w generatorze nagłówka CSP.
PHP-FPM zamiast mod_php
Nowoczesny Apache nie wykonuje PHP wewnątrz procesu serwera, tylko przekazuje je do usługi PHP-FPM przez gniazdo, np. unix:/run/php/php8.3-fpm.sock. Narzędzie zapisuje to w bloku <FilesMatch \.php$> z dyrektywą SetHandler "proxy:...|fcgi://localhost". Taki układ jest szybszy, oddziela uprawnienia PHP od Apache i pozwala trzymać różne wersje PHP dla różnych domen. Wymaga modułów proxy_fcgi i setenvif. Puste pole pomija ten blok — vhost obsłuży wtedy tylko pliki statyczne.
Gdzie zapisać plik i jak go włączyć
- Zapisz konfigurację w
/etc/apache2/sites-available/, np. jakoexample.com.conf. - Włącz witrynę poleceniem
a2ensite example.com.conf— symlink pojawi się wsites-enabled/. - Przy SSL i przekierowaniu włącz moduły:
a2enmod ssl rewrite proxy_fcgi setenvif. - Sprawdź składnię przez
apache2ctl configtest(powinno zwrócićSyntax OK). - Przeładuj serwer przez
systemctl reload apache2.
DocumentRoot wskaż katalog public projektu, a nie jego korzeń — inaczej plik .env i kod źródłowy byłyby dostępne przez przeglądarkę.Ten sam serwer, wiele domen
Na tym polega sens VirtualHostów: jeden Apache obsługuje wiele witryn, bo dla każdego żądania dopasowuje nagłówek Host do właściwego ServerName. Każda domena dostaje własny plik w sites-available i osobne logi. Jeśli część reguł chcesz przenieść na Nginx w roli proxy, wyjątki dla pojedynczych ścieżek ułożysz w konfiguratorze bloków location Nginx.
Najczęściej zadawane pytania
Dlaczego strona zwraca 403 Forbidden mimo poprawnej ścieżki?
Najczęściej w bloku <Directory> brakuje Require all granted. Apache od 2.4 domyślnie odmawia dostępu do katalogów, których nie otworzysz jawnie. Generowany tu vhost zawsze wstawia tę linię.
Włączyłem SSL, a Apache nie startuje. Co sprawdzić?
Blok SSL musi nasłuchiwać na porcie 443, dlatego narzędzie przenosi go z 80 na 443 automatycznie. Sprawdź też, czy włączony jest moduł ssl i czy pliki fullchain.pem oraz privkey.pem istnieją pod podaną ścieżką. Powód zawsze wpisuje error log.
Co wpisać w DocumentRoot dla Laravela?
Katalog public projektu, na przykład /var/www/example.com/public. Wskazanie korzenia projektu wystawiłoby na świat plik .env i cały kod. Ta sama zasada dotyczy Symfony.
Dlaczego strona pokazuje domyślną witrynę zamiast mojej?
Zwykle vhost nie został włączony przez a2ensite albo koliduje z witryną 000-default. Wyłącz ją przez a2dissite 000-default, sprawdź apache2ctl configtest i przeładuj. Apache używa pierwszego pasującego bloku.
Czy muszę używać PHP-FPM?
Nie, ale to zalecany układ. Puste pole pomija blok <FilesMatch> i vhost obsłuży pliki statyczne. Gdy podasz gniazdo, pamiętaj o modułach proxy_fcgi i setenvif, a wersja PHP w ścieżce gniazda musi odpowiadać usłudze FPM.