Cum să configurezi Virtual Hosts în Nginx pe Ubuntu
Configurarea gazdelor virtuale în Nginx este una dintre cele mai puternice tehnici pentru găzduirea mai multor site-uri web pe un singur server, fiecare cu propriul domeniu, director rădăcină și configurație independentă. Nginx gestionează acest lucru prin blocuri de server — unități de configurație flexibile și ușoare care definesc modul în care serverul web răspunde cererilor pentru fiecare domeniu.
Indiferent dacă gestionezi un portofoliu personal, rulezi site-uri pentru clienți sau scalezi o aplicație multi-tenant, acest ghid oferă o prezentare completă, gata pentru producție, pentru configurarea gazdelor virtuale Nginx pe Ubuntu. Vom acoperi structura directoarelor, configurația blocurilor de server, activarea site-urilor, configurarea SSL/HTTPS și depanare — totul ce ai nevoie pentru a trece de la zero la un server Nginx multi-site complet funcțional.
> Cauți un server Ubuntu fiabil pentru a urma? Planurile VPS Hosting de la AlexHost îți oferă acces complet root, stocare SSD și implementare instantanee — perfect pentru exact acest caz de utilizare.
Condiții preliminare
Înainte de a începe, asigurați-vă că sunt îndeplinite următoarele condiții:
Nginx instalat pe serverul dvs.
Dacă Nginx nu este încă instalat, executați următoarele comenzi pe serverul dvs. Ubuntu:
sudo apt update
sudo apt install nginxVerificați instalarea și asigurați-vă că serviciul rulează:
sudo systemctl status nginxAr trebui să vedeți active (running) în rezultat. Dacă nu, porniți-l manual:
sudo systemctl start nginx
sudo systemctl enable nginxNume de domenii indicate pe serverul dvs.
Fiecare gazdă virtuală necesită un nume de domeniu care se rezolvă la adresa IP publică a serverului dvs. Va trebui să creați înregistrări A în setările DNS care să indice IP-ul serverului.
> Aveți nevoie de un domeniu? Înregistrați-vă pe Înregistrarea de domenii AlexHost și gestionați înregistrările DNS direct din panoul de control.
Pentru scopuri de testare locală, puteți ocoli DNS-ul în întregime editând fișierul /etc/hosts (acoperit în Pasul 7).
Permisiuni necesare
Aveți nevoie de privilegii sudo pe serverul dvs. Ubuntu pentru a crea directoare, edita fișiere de configurare și gestiona serviciul Nginx.
Pasul 1: Configurați directoarele pentru fiecare site web
Fiecare site web găzduit pe serverul dvs. ar trebui să aibă propriul director izolat pentru a stoca fișierele web. Această separare vă ține proiectele organizate și previne conflictele de configurare.
În acest ghid, vom configura două domenii de exemplu: example1.com și example2.com. Înlocuiți acestea cu numele domeniilor dvs. reale pe parcursul ghidului.
Creați directoarele rădăcină web
sudo mkdir -p /var/www/example1.com/html
sudo mkdir -p /var/www/example2.com/htmlIndicatorul -p creează toate directoarele intermediare după cum este necesar.
Atribuiți proprietatea corectă
Acordați proprietatea acestor directoare utilizatorului de sistem www-data, utilizatorul cu care rulează Nginx:
sudo chown -R www-data:www-data /var/www/example1.com/html
sudo chown -R www-data:www-data /var/www/example2.com/htmlAceasta asigură că Nginx are permisiunile de citire necesare pentru a servi fișiere din aceste directoare.
Setați permisiunile directoarelor
sudo chmod -R 755 /var/wwwPermisiunea 755 înseamnă că proprietarul are acces complet de citire/scriere/execuție, în timp ce grupurile și alți utilizatori au acces de citire și execuție — potrivit pentru conținutul web servit public.
Pasul 2: Creați conținut HTML de exemplu
Pentru a verifica că fiecare gazdă virtuală funcționează corect, creați un fișier index.html simplu pentru fiecare site.
Pentru example1.com
echo "<h1>Welcome to Example1.com!</h1>" | sudo tee /var/www/example1.com/html/index.htmlPentru example2.com
echo "<h1>Welcome to Example2.com!</h1>" | sudo tee /var/www/example2.com/html/index.htmlAceste pagini placeholder vor confirma că Nginx direcționează cererile către rădăcina documentului corect pentru fiecare domeniu.
Pasul 3: Creați fișiere de configurare Virtual Host
Nginx stochează fișierele de configurare a site-ului în /etc/nginx/sites-available/. Fiecare fișier definește un server block — echivalentul Nginx al unui virtual host Apache. Site-urile activate sunt apoi symlinked în /etc/nginx/sites-enabled/.
Configurație pentru example1.com
Creați un nou fișier de configurare:
sudo nano /etc/nginx/sites-available/example1.comAdăugați următorul server block:
server {
listen 80;
listen [::]:80;
server_name example1.com www.example1.com;
root /var/www/example1.com/html;
index index.html index.htm;
access_log /var/log/nginx/example1.com.access.log;
error_log /var/log/nginx/example1.com.error.log;
location / {
try_files $uri $uri/ =404;
}
}Salvați și închideți fișierul (Ctrl+X, apoi Y, apoi Enter).
Configurație pentru example2.com
Creați un al doilea fișier de configurare:
sudo nano /etc/nginx/sites-available/example2.comAdăugați următorul server block:
server {
listen 80;
listen [::]:80;
server_name example2.com www.example2.com;
root /var/www/example2.com/html;
index index.html index.htm;
access_log /var/log/nginx/example2.com.access.log;
error_log /var/log/nginx/example2.com.error.log;
location / {
try_files $uri $uri/ =404;
}
}Directive-cheie explicate
| Directivă | Scop |
|---|---|
listen 80 | Ascultă conexiunile HTTP primite pe portul 80 |
listen [::]:80 | Activează suportul IPv6 pe portul 80 |
server_name | Definește care nume de domeniu sunt gestionate de acest block |
root | Setează rădăcina documentului — unde sunt stocate fișierele site-ului |
index | Specifică fișierul implicit care trebuie servit când este solicitat un director |
try_files | Încearcă să servească fișierul solicitat; returnează 404 dacă nu este găsit |
access_log / error_log | Fișiere jurnal separate per site pentru depanare mai ușoară |
Pasul 4: Activați Virtual Hosts-urile
Nginx activează site-urile prin crearea de link-uri simbolice din sites-available la sites-enabled. Acest design vă permite să pregătiți configurații fără a le activa imediat.
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/Eliminați Site-ul Implicit (Opțional dar Recomandat)
Dacă doriți să preveniți interferența paginii implicite de placeholder a Nginx, dezactivați-o:
sudo rm /etc/nginx/sites-enabled/defaultPuteți oricând să o reactivați mai târziu prin recrearea link-ului simbolic.
Pasul 5: Testați configurația Nginx
Înainte de a reporni Nginx, validați întotdeauna fișierele de configurație pentru erori de sintaxă. Un fișier configurate incorect poate duce la căderea tuturor site-urilor de pe server.
sudo nginx -tUn test reușit returnează:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulDacă vedeți erori, Nginx va indica fișierul și numărul liniei unde a apărut problema. Revizuiți fișierul de configurație relevant și corectați orice greșeli de tastare sau puncte și virgule lipsă înainte de a continua.
Pasul 6: Reporniți Nginx pentru a aplica modificările
Odată ce testul de configurare trece, reîncărcați sau reporniți Nginx pentru a aplica modificările dvs.:
sudo systemctl restart nginxAlternativ, utilizați reload pentru o repornire ușoară care nu întrerupe conexiunile active:
sudo systemctl reload nginxPasul 7: Accesați site-urile dvs.
Dacă DNS este deja configurat
Dacă numele de domeniu dvs. indică deja adresa IP a serverului dvs. prin înregistrări DNS A, deschideți pur și simplu un browser și navigați la:
http://example1.comhttp://example2.com
Ar trebui să vedeți mesajele respective de "Bun venit" pe care le-ați creat în Pasul 2.
Pentru testare locală (fără DNS)
Dacă testați local sau DNS nu s-a propagat încă, puteți simula rezoluția domeniului editând fișierul /etc/hosts al mașinii locale (pe Linux/macOS) sau C:WindowsSystem32driversetchosts (pe Windows).
Deschideți fișierul cu privilegii ridicate:
sudo nano /etc/hostsAdăugați următoarele linii, înlocuind YOUR_SERVER_IP cu adresa IP reală a serverului dvs.:
YOUR_SERVER_IP example1.com www.example1.com
YOUR_SERVER_IP example2.com www.example2.comSalvați fișierul și testați în browser. Nu uitați să eliminați aceste intrări odată ce înregistrările DNS reale sunt active.
Pasul 8: Activați HTTPS cu Let’s Encrypt (Recomandat)
Rularea site-urilor web pe HTTP simplu nu mai este acceptabilă pentru mediile de producție. HTTPS criptează traficul dintre serverul dvs. și vizitatori, îmbunătățește clasamentele SEO și este necesar pentru funcțiile moderne ale browserului. Let’s Encrypt oferă certificate SSL/TLS gratuite și auto-reînnoibile.
> Preferați o soluție SSL premium? AlexHost oferă Certificate SSL de încredere pentru întreprinderile care au nevoie de validare extinsă sau acoperire wildcard.
Instalați Certbot
sudo apt install certbot python3-certbot-nginxObțineți și instalați certificate SSL
Rulați Certbot pentru fiecare domeniu. Plugin-ul --nginx modifică automat configurația Nginx pentru a activa HTTPS:
sudo certbot --nginx -d example1.com -d www.example1.comsudo certbot --nginx -d example2.com -d www.example2.comUrmați prompturile interactive. Certbot va:
- Verifica proprietatea domeniului prin provocare HTTP
- Obține un certificat semnat de la Let’s Encrypt
- Actualizează automat blocul serverului Nginx pentru a asculta pe portul 443
- Configurează redirecționarea de la HTTP la HTTPS
Verificați auto-reînnouirea
Certificatele Let’s Encrypt expiră la fiecare 90 de zile. Certbot instalează un cronometru systemd pentru a gestiona reînnouirile automat. Testați-l cu:
sudo certbot renew --dry-runDacă rularea de probă se completează fără erori, certificatele dvs. se vor reînnoi automat fără nicio intervenție manuală.
Cum va arăta blocul serverului actualizat
După ce Certbot rulează, configurația dvs. va fi actualizată automat la ceva similar cu aceasta:
server {
listen 443 ssl;
server_name example1.com www.example1.com;
root /var/www/example1.com/html;
index index.html;
ssl_certificate /etc/letsencrypt/live/example1.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example1.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 80;
server_name example1.com www.example1.com;
return 301 https://$host$request_uri;
}Depanare Probleme Comune
Chiar și cu o configurare atentă, pot apărea probleme. Iată cele mai frecvente probleme și cum să le rezolvați:
502 Bad Gateway
Aceasta înseamnă de obicei că Nginx nu poate comunica cu un serviciu backend (de exemplu, PHP-FPM sau o aplicație Node.js). Verificați că serviciul upstream rulează și că socket-ul/portul din configurația dvs. este corect.
403 Forbidden
De obicei o problemă de permisiuni. Verificați că www-data deține rădăcina web și că permisiunile fișierelor sunt setate corect:
sudo chown -R www-data:www-data /var/www/example1.com
sudo chmod -R 755 /var/www/example1.com404 Not Found
Verificați că directiva root din blocul dvs. server indică directorul corect și că index.html există la acea cale.
Site Greșit Se Încarcă
Dacă vizitarea example1.com încarcă conținutul example2.com, verificați că:
- Fiecare directivă
server_nameeste unică și corectă - Symlink-urile din
sites-enabledsunt valide:ls -la /etc/nginx/sites-enabled/ - Site-ul implicit este dezactivat dacă intră în conflict
Nginx Nu Pornește După Schimbarea Configurației
Executați întotdeauna sudo nginx -t înainte de a reporni. Examinați cu atenție rezultatul erorii — va indica exact fișierul și linia care cauzează problema.
Verificarea Jurnalelor
Jurnalele per-site (configurate în Pasul 3) sunt cea mai bună resursă de depanare:
sudo tail -f /var/log/nginx/example1.com.error.log
sudo tail -f /var/log/nginx/example1.com.access.logConsiderații Avansate
Hosting Aplicații PHP
Dacă site-urile dvs. rulează PHP (de ex., WordPress, Laravel), va trebui să instalați PHP-FPM și să adăugați o directivă fastcgi_pass la blocul serverului:
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}Utilizarea unui Panou de Control
Gestionarea gazdelor virtuale Nginx manual prin linia de comandă este puternică, dar consumă timp la scară. Dacă preferați o interfață grafică, luați în considerare VPS cu cPanel de la AlexHost sau explorați gama completă de Panouri de Control VPS pentru a găsi cea mai potrivită soluție pentru fluxul de lucru al dvs.
Scalare Dincolo de un Singur VPS
Pe măsură ce traficul dvs. crește, un singur VPS poate să nu fie suficient. Pentru sarcini de lucru cu trafic ridicat și consum intensiv de resurse, luați în considerare upgrade-ul la Servere Dedicate pentru resurse garantate, izolare completă a hardware-ului și performanță maximă.
Concluzie
Ați configurat cu succes gazdele virtuale Nginx pe Ubuntu, permițând serverului dvs. să găzduiască mai multe site-uri web independente simultan. Iată un rezumat al ceea ce a fost realizat:
- Ați creat directoare de rădăcină web izolate pentru fiecare domeniu cu proprietate și permisiuni corecte
- Ați scris configurații de bloc server curate, gata pentru producție cu jurnale de acces și erori separate
- Ați activat gazdele virtuale folosind modelul
sites-available/sites-enabledbazat pe symlink-uri al Nginx - Ați validat și reîncărcat configurația Nginx în siguranță
- Ați securizat fiecare site cu HTTPS folosind certificatele gratuite Let's Encrypt prin Certbot
Această configurație este eficientă, scalabilă și urmează cele mai bune practici Nginx. Indiferent dacă găzduiți două site-uri sau douăzeci, același model se aplică — pur și simplu repetați procesul pentru fiecare domeniu suplimentar.
Pentru rezultate optime, asociați această configurație cu un mediu de găzduire rapid și fiabil. Planurile VPS Hosting ale AlexHost sunt optimizate pentru sarcini Linux, vin cu acces root complet și sunt susținute de suport tehnic 24/7 — oferindu-vă fundația ideală pentru rularea Nginx în producție.
la toate serviciile de găzduire