Jak skonfigurować wirtualne hosty w Nginx na Ubuntu
Konfiguracja wirtualnych hostów w Nginx umożliwia hostowanie wielu witryn na jednym serwerze, przy czym każda witryna ma własną nazwę domeny. Hosty wirtualne Nginx są konfigurowane za pomocą “bloków serwera”, które definiują ustawienia dla każdej witryny. Ten przewodnik przeprowadzi cię przez konfigurację wirtualnych hostów na serwerze Ubuntu z Nginx.
1. Wymagania wstępne
- Zainstalowany Nginx: Upewnij się, że Nginx jest zainstalowany na twoim serwerze. Jeśli nie, zainstaluj go za pomocą:
sudo apt updatesudo apt install nginx - Nazwy domen: Nazwy domen, które chcesz hostować, powinny być skierowane na adres IP serwera. Możesz zmodyfikować plik /etc/hosts do celów testowych.
2. Skonfiguruj katalogi dla każdej witryny
Każda witryna powinna mieć własny katalog do przechowywania plików witryny. Utwórzmy katalogi dla dwóch przykładowych witryn, example1.com i example2.com.
sudo mkdir -p /var/www/example1.com/html sudo mkdir -p /var/www/example2.com/htmlPrzyznaj prawo własności do tych katalogów użytkownikowi Nginx (www-data), aby upewnić się, że Nginx ma niezbędne uprawnienia.
sudo chown -R www-data:www-data /var/www/example1.com/html sudo chown -R www-data:www-data /var/www/example2.com/htmlUstaw odpowiednie uprawnienia:
sudo chmod -R 755 /var/www3. Tworzenie przykładowej zawartości
Aby przetestować wirtualne hosty, dodaj przykładowe pliki HTML dla każdej witryny.
Example1.com:
echo "<h1>Welcome to Example1.com!</h1>" | sudo tee /var/www/example1.com/html/index.htmlExample2.com:
echo "<h1>Welcome to Example2.com!</h1>" | sudo tee /var/www/example2.com/html/index.html4. Tworzenie plików konfiguracyjnych hosta wirtualnego
Teraz utworzymy plik konfiguracyjny bloku serwera (wirtualnego hosta) dla każdej witryny. Nginx przechowuje te pliki konfiguracyjne w katalogu /etc/nginx/sites-available/.
Krok 1: Utwórz konfigurację dla Example1.com
Utwórz nowy plik konfiguracyjny dla example1.com:
sudo nano /etc/nginx/sites-available/example1.comDodaj następującą konfigurację:
server {
listen 80;
server_name example1.com www.example1.com;
root /var/www/example1.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}Krok 2: Tworzenie konfiguracji dla Example2.com
Utwórz plik konfiguracyjny dla example2.com:
sudo nano /etc/nginx/sites-available/example2.comDodaj następującą konfigurację:
server {
listen 80;
server_name example2.com www.example2.com;
root /var/www/example2.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}5. Włącz wirtualne hosty
Nginx używa dowiązań symbolicznych do włączania hostów wirtualnych. Połącz pliki konfiguracyjne z sites-available do sites-enabled:
sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/example2.com /etc/nginx/sites-enabled/6. Przetestuj konfigurację
Aby upewnić się, że konfiguracja nie zawiera błędów składni, uruchom ją:
sudo nginx -tJeśli wszystko jest poprawne, zobaczysz komunikat potwierdzający. Jeśli wystąpią błędy, Nginx wyświetli szczegóły, aby pomóc w rozwiązywaniu problemów.
7. Uruchom ponownie Nginx
Po potwierdzeniu konfiguracji uruchom ponownie Nginx, aby zastosować zmiany:
sudo systemctl restart nginx8. Dostęp do stron internetowych
Jeśli nazwy domen są skierowane na twój serwer, powinieneś być teraz w stanie uzyskać dostęp do każdej witryny, odwiedzając ją:
- http://example1.com
- http://example2.com
W przypadku testów lokalnych można edytować plik /etc/hosts, aby zmapować nazwy domen na adres IP serwera. Dodaj wpisy takie jak:
127.0.0.1 example1.com 127.0.0.1 example2.comZapisz i zamknij plik, a następnie spróbuj uzyskać dostęp do witryn w przeglądarce.
9. Włączanie protokołu HTTPS dla każdej witryny (opcjonalnie)
Aby uzyskać bezpieczne połączenia, możesz skonfigurować certyfikaty SSL za pomocą Let’s Encrypt. Aby włączyć HTTPS:
Zainstaluj certbot:
sudo apt install certbot python3-certbot-nginxUruchom następujące polecenie, aby uzyskać i skonfigurować certyfikaty SSL dla każdej domeny:
sudo certbot --nginx -d example1.com -d www.example1.com sudo certbot --nginx -d example2.com -d www.example2.comPostępuj zgodnie z instrukcjami, a Certbot automatycznie skonfiguruje HTTPS w konfiguracji Nginx.
Wnioski
Konfigurując wirtualne hosty w Nginx na Ubuntu, można hostować wiele stron internetowych na jednym serwerze, każda z własną konfiguracją i zawartością. Taka konfiguracja jest wydajna i skalowalna, dzięki czemu Nginx jest doskonałym wyborem do hostowania wielu witryn na tym samym serwerze.


