Konfiguracja wirtualnych hostów i certyfikatów SSL w systemie Linux
Wirtualne hosty i certyfikaty SSL to dwa kluczowe elementy, które pozwalają na zarządzanie i zabezpieczanie stron internetowych na serwerach działających w systemie Linux. W tym artykule omówimy, jak skonfigurować wirtualne hosty i certyfikaty SSL w popularnych serwerach WWW, takich jak Apache i Nginx, aby zapewnić prawidłowe działanie stron oraz ich bezpieczeństwo.
1. Co to są wirtualne hosty?
Wirtualne hosty (Virtual Hosts) to sposób na konfigurację serwera WWW w taki sposób, aby mógł obsługiwać więcej niż jedną stronę internetową na tym samym adresie IP. W ten sposób można hostować wiele witryn internetowych na jednym serwerze, każdą z unikalną domeną. Dzięki wirtualnym hostom, każda witryna ma swoją własną konfigurację, co umożliwia łatwe zarządzanie kilkoma projektami na tym samym serwerze.
1.1. Rodzaje wirtualnych hostów
W systemie Linux wyróżniamy dwa główne typy wirtualnych hostów:
- Wirtualne hosty na podstawie nazw (Name-based Virtual Hosts): Serwer WWW obsługuje różne witryny, rozróżniając je na podstawie nazw domen w nagłówkach HTTP. Jest to najczęstszy sposób konfiguracji.
- Wirtualne hosty na podstawie adresów IP (IP-based Virtual Hosts): Serwer WWW różnicuje witryny na podstawie adresu IP, co pozwala na przypisanie różnych witryn do różnych adresów IP na tym samym serwerze.

2. Konfiguracja wirtualnych hostów w Apache
2.1. Główne pliki konfiguracyjne Apache
Plik konfiguracyjny Apache dla wirtualnych hostów znajduje się w katalogu:
- Ubuntu/Debian:
/etc/apache2/sites-available/ - CentOS/Fedora:
/etc/httpd/conf.d/
W tym katalogu można tworzyć pliki konfiguracyjne dla każdej witryny, która ma działać na serwerze.
2.2. Konfiguracja wirtualnego hosta w Apache
Aby skonfigurować wirtualny host w Apache, wykonaj poniższe kroki:
- Tworzenie pliku konfiguracyjnego: Utwórz plik w katalogu
sites-availablez nazwą Twojej witryny, np.example.com.conf.
sudo nano /etc/apache2/sites-available/example.com.conf
- Przykład konfiguracji wirtualnego hosta:
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName example.com
DocumentRoot /var/www/example
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- Aktywowanie wirtualnego hosta:
Po zapisaniu pliku, aktywuj wirtualny host za pomocą polecenia:
sudo a2ensite example.com.conf
- Restart Apache:
Aby zastosować zmiany, zrestartuj Apache:
sudo systemctl reload apache2
2.3. Konfiguracja wirtualnych hostów na porcie 443 (HTTPS)
Jeśli chcesz, aby Twoja witryna działała również na HTTPS, musisz skonfigurować port 443 oraz certyfikaty SSL.
3. Konfiguracja certyfikatów SSL w Apache
SSL (Secure Sockets Layer) jest protokołem bezpieczeństwa, który zapewnia szyfrowanie danych przesyłanych pomiędzy przeglądarką użytkownika a serwerem WWW. Aby skonfigurować certyfikaty SSL w Apache, wykonaj poniższe kroki.
3.1. Uzyskiwanie certyfikatu SSL
Możesz uzyskać certyfikat SSL na dwa sposoby:
- Bezpieczny certyfikat SSL od dostawcy (np. Let’s Encrypt, Comodo, Symantec).
- Samopodpisany certyfikat SSL – w przypadku testów i lokalnych środowisk.
3.2. Instalacja certyfikatu SSL w Apache
Po uzyskaniu certyfikatu SSL, skopiuj pliki certyfikatu do katalogu na serwerze. Na przykład:
- Certyfikat SSL:
/etc/ssl/certs/example.com.crt - Klucz prywatny:
/etc/ssl/private/example.com.key
3.3. Konfiguracja wirtualnego hosta HTTPS w Apache
W pliku konfiguracyjnym wirtualnego hosta (np. example.com.conf), dodaj następujące dyrektywy:
<VirtualHost *:443>
ServerAdmin webmaster@example.com
ServerName example.com
DocumentRoot /var/www/example
SSLEngine on
SSLCertificateFile /etc/ssl/certs/example.com.crt
SSLCertificateKeyFile /etc/ssl/private/example.com.key
SSLCertificateChainFile /etc/ssl/certs/example.com.chain.crt
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
3.4. Aktywowanie modułów SSL
Aby Apache obsługiwał SSL, musisz aktywować odpowiednie moduły. Użyj poniższych poleceń:
sudo a2enmod ssl
sudo systemctl restart apache2
Po tej konfiguracji Twoja witryna powinna być dostępna zarówno na HTTP, jak i HTTPS.
4. Konfiguracja wirtualnych hostów w Nginx
4.1. Główne pliki konfiguracyjne Nginx
Podobnie jak w Apache, w Nginx możesz ustawić wirtualne hosty w katalogu:
- Ubuntu/Debian:
/etc/nginx/sites-available/ - CentOS/Fedora:
/etc/nginx/conf.d/
4.2. Konfiguracja wirtualnego hosta w Nginx
Aby skonfigurować wirtualny host w Nginx, wykonaj poniższe kroki:
- Tworzenie pliku konfiguracyjnego:
sudo nano /etc/nginx/sites-available/example.com
- Przykład konfiguracji wirtualnego hosta:
server {
listen 80;
server_name example.com;
root /var/www/example;
location / {
try_files $uri $uri/ =404;
}
}
- Aktywowanie pliku konfiguracyjnego:
Utwórz dowiązanie symboliczne w katalogu sites-enabled:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
- Restart Nginx:
Po zapisaniu pliku, zrestartuj Nginx:
sudo systemctl reload nginx
4.3. Konfiguracja SSL w Nginx
- Konfiguracja wirtualnego hosta HTTPS:
Po uzyskaniu certyfikatu SSL, dodaj go do pliku konfiguracyjnego wirtualnego hosta w Nginx:
server {
listen 443 ssl;
server_name example.com;
root /var/www/example;
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
location / {
try_files $uri $uri/ =404;
}
}
- Aktywowanie konfiguracji SSL:
Po zapisaniu zmian, zrestartuj serwer:
sudo systemctl reload nginx
5. Podsumowanie
Konfiguracja wirtualnych hostów i certyfikatów SSL to kluczowe elementy zapewniające prawidłowe i bezpieczne działanie stron internetowych na serwerach Linux. Dzięki wirtualnym hostom można obsługiwać wiele witryn na jednym serwerze, a certyfikaty SSL zapewniają szyfrowanie danych i bezpieczeństwo użytkowników. Zarówno Apache, jak i Nginx oferują proste i elastyczne opcje konfiguracji, które pozwalają na łatwe zarządzanie witrynami i aplikacjami w Internecie.






