Economisiți 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul: Skills Începeți
Secțiuni
Administrație Linux

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 nginx

Verificați instalarea și asigurați-vă că serviciul rulează:

sudo systemctl status nginx

Ar trebui să vedeți active (running) în rezultat. Dacă nu, porniți-l manual:

sudo systemctl start nginx
sudo systemctl enable nginx

Nume 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/html

Indicatorul -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/html

Aceasta 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/www

Permisiunea 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.html

Pentru example2.com

echo "<h1>Welcome to Example2.com!</h1>" | sudo tee /var/www/example2.com/html/index.html

Aceste 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.com

Adă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.com

Adă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 80Ascultă conexiunile HTTP primite pe portul 80
listen [::]:80Activează suportul IPv6 pe portul 80
server_nameDefinește care nume de domeniu sunt gestionate de acest block
rootSetează rădăcina documentului — unde sunt stocate fișierele site-ului
indexSpecifică 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_logFiș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/default

Puteț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 -t

Un test reușit returnează:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Dacă 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 nginx

Alternativ, utilizați reload pentru o repornire ușoară care nu întrerupe conexiunile active:

sudo systemctl reload nginx

Pasul 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.com
  • http://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/hosts

Adă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.com

Salvaț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-nginx

Obț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.com
sudo certbot --nginx -d example2.com -d www.example2.com

Urmați prompturile interactive. Certbot va:

  1. Verifica proprietatea domeniului prin provocare HTTP
  2. Obține un certificat semnat de la Let’s Encrypt
  3. Actualizează automat blocul serverului Nginx pentru a asculta pe portul 443
  4. 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-run

Dacă 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.com

404 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_name este unică și corectă
  • Symlink-urile din sites-enabled sunt 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.log

Consideraț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-enabled bazat 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.