15%

Economisește 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
31.10.2024

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 server — unități de configurație flexibile și ușoare care definesc modul în care serverul web răspunde la cererile 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 server, activarea site-urilor, configurarea SSL/HTTPS și depanarea — 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 ale AlexHost îți oferă acces root complet, stocare SSD și implementare instantanee — perfecte pentru exact acest caz de utilizare.

Cuprins

  1. Cerințe preliminare
  2. Configurează directoarele pentru fiecare site web
  3. Creează conținut HTML exemplu
  4. Creează fișiere de configurare a gazdelor virtuale
  5. Activează gazdele virtuale
  6. Testează configurația Nginx
  7. Repornește Nginx pentru a aplica modificările
  8. Accesează site-urile tale
  9. Activează HTTPS cu Let’s Encrypt (Recomandat)
  10. Depanarea problemelor comune
  11. Concluzie

Cerințe preliminare

Înainte de a începe, asigură-te că sunt îndeplinite următoarele condiții:

Nginx instalat pe serverul tău

Dacă Nginx nu este încă instalat, rulează următoarele comenzi pe serverul tău Ubuntu:

sudo apt update
sudo apt install nginx

Verifică instalarea și verifică că serviciul rulează:

sudo systemctl status nginx

Ar trebui să vezi active (running) în rezultat. Dacă nu, pornește-l manual:

sudo systemctl start nginx
sudo systemctl enable nginx

Domenii care indică serverul tău

Fiecare gazdă virtuală necesită un domeniu care se rezolvă la adresa IP publică a serverului tău. Va trebui să creezi înregistrări A în setările DNS care indică IP-ul serverului.

> Ai nevoie de un domeniu? Înregistrează-ți al tău prin Înregistrarea domeniilor AlexHost și gestionează înregistrările DNS direct din panoul de control.

Pentru testare locală, poți ocoli DNS-ul complet editând fișierul /etc/hosts (acoperit în Pasul 7).

Permisiuni necesare

Vei avea nevoie de privilegii sudo pe serverul tău Ubuntu pentru a crea directoare, edita fișiere de configurare și gestiona serviciul Nginx.

Pasul 1: Configurează directoarele pentru fiecare site web

Fiecare site web găzduit pe serverul tău ar trebui să aibă propriul director izolat pentru a stoca fișierele web. Această separare ține proiectele tale organizate și previne conflictele de configurare.

În acest ghid, vom configura două domenii exemplu: example1.com și example2.com. Înlocuiește acestea cu numele domeniilor tale reale pe tot parcursul.

Creează directoarele rădăcină web

sudo mkdir -p /var/www/example1.com/html
sudo mkdir -p /var/www/example2.com/html

Steagul -p creează toate directoarele intermediare după cum este necesar.

Atribuie proprietatea corectă

Acordă proprietatea acestor directoare utilizatorului www-data, utilizatorul de sistem pe 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.

Setează 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ținut web servit public.

Pasul 2: Creează conținut HTML exemplu

Pentru a verifica că fiecare gazdă virtuală funcționează corect, creează un fișier simplu index.html 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 la directorul document corect pentru fiecare domeniu.

Pasul 3: Creează fișiere de configurare a gazdelor virtuale

Nginx stochează fișierele de configurare a site-urilor în /etc/nginx/sites-available/. Fiecare fișier definește un bloc server — echivalentul Nginx al unei gazde virtuale Apache. Site-urile activate sunt apoi symlinked în /etc/nginx/sites-enabled/.

Configurație pentru example1.com

Creează un nou fișier de configurare:

sudo nano /etc/nginx/sites-available/example1.com

Adaugă următorul bloc server:

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;
    }
}

Salvează și închide fișierul (Ctrl+X, apoi Y, apoi Enter).

Configurație pentru example2.com

Creează un al doilea fișier de configurare:

sudo nano /etc/nginx/sites-available/example2.com

Adaugă următorul bloc server:

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 de intrare pe portul 80
listen [::]:80Activează suportul IPv6 pe portul 80
server_nameDefinește care nume de domenii gestionează acest bloc
rootSetează rădăcina documentului — unde sunt stocate fișierele site-ului web
indexSpecifică fișierul implicit de servit când este solicitată o directoare
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: Activează gazdele virtuale

Nginx activează site-urile creând legături simbolice din sites-available la sites-enabled. Acest design îți permite să pregătești 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/

Dezactivează site-ul implicit (Opțional dar recomandat)

Dacă dorești să previi pagina placeholder implicită a Nginx să interfereze, dezactivează-o:

sudo rm /etc/nginx/sites-enabled/default

Poți oricând să o reactivezi mai târziu recreând symlink-ul.

Pasul 5: Testează configurația Nginx

Înainte de a reporni Nginx, validează întotdeauna fișierele de configurare pentru erori de sintaxă. Un fișier configurat 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ă vezi erori, Nginx va indica fișierul și numărul liniei unde apare problema. Revizuiește fișierul de configurare relevant și corectează orice greșeli de scriere sau puncte și virgule lipsă înainte de a continua.

Pasul 6: Repornește Nginx pentru a aplica modificările

Odată ce testul de configurare trece, reîncarcă sau repornește Nginx pentru a aplica modificările:

sudo systemctl restart nginx

Alternativ, folosește reload pentru o repornire ușoară care nu întrerupe conexiunile active:

sudo systemctl reload nginx

Pasul 7: Accesează site-urile tale

Dacă DNS este deja configurat

Dacă numele domeniilor tale indică deja IP-ul serverului tău prin înregistrări DNS A, pur și simplu deschide un browser și navighează la:

  • http://example1.com
  • http://example2.com

Ar trebui să vezi mesajele respective de „Bun venit” pe care le-ai creat în Pasul 2.

Pentru testare locală (fără DNS)

Dacă testezi local sau DNS nu s-a propagat încă, poți simula rezoluția domeniului editând fișierul /etc/hosts al mașinii tale locale (pe Linux/macOS) sau C:WindowsSystem32driversetchosts (pe Windows).

Deschide fișierul cu privilegii ridicate:

sudo nano /etc/hosts

Adaugă următoarele linii, înlocuind YOUR_SERVER_IP cu IP-ul real al serverului tău:

YOUR_SERVER_IP example1.com www.example1.com
YOUR_SERVER_IP example2.com www.example2.com

Salvează fișierul și testează în browser. Nu uita să elimini aceste intrări odată ce înregistrările DNS reale sunt active.

Pasul 8: Activează 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 între serverul tău și vizitatori, îmbunătățește clasamentele SEO și este necesar pentru caracteristicile moderne ale browserului. Let’s Encrypt oferă certificate SSL/TLS gratuite și reînnoibile automat.

> Preferi o soluție SSL premium? AlexHost oferă Certificate SSL de încredere pentru afacerile care au nevoie de validare extinsă sau acoperire wildcard.

Instalează Certbot

sudo apt install certbot python3-certbot-nginx

Obține și instalează certificate SSL

Rulează Certbot pentru fiecare domeniu. Pluginul --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

Urmează indicațiile 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 server Nginx pentru a asculta pe portul 443
  4. Configurează redirecționarea HTTP-la-HTTPS

Verifică reînnouirea automată

Certificatele Let’s Encrypt expiră la fiecare 90 de zile. Certbot instalează un cronometru systemd pentru a gestiona reînnouirile automat. Testează-l cu:

sudo certbot renew --dry-run

Dacă rularea de probă se completează fără erori, certificatele tale se vor reînnoi automat fără nicio intervenție manuală.

Cum va arăta blocul server actualizat

După ce Certbot rulează, configurația ta va fi actualizată automat la ceva de genul:

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;
}

Depanarea problemelor comune

Chiar și cu configurare atentă, pot apărea probleme. Iată cele mai comune probleme și cum să le rezolvi:

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). Verifică că serviciul upstream rulează și că socketul/portul din configurația ta este corect.

403 Forbidden

De obicei o problemă de permisiuni. Verifică 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

Verifică că directiva root din blocul server indică directorul corect și că index.html există la acea cale.

Site-ul greșit se încarcă

Dacă vizitarea example1.com încarcă conținutul example2.com, verifică 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

Rulează întotdeauna sudo nginx -t înainte de a reporni. Revizuiește rezultatul erorii cu atenție — 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

Găzduirea aplicațiilor PHP

Dacă site-urile tale rulează PHP (de exemplu, WordPress, Laravel), va trebui să instalezi PHP-FPM și să adaugi o directivă fastcgi_pass la blocul server:

###PPT_NOTR_28

15%

Economisește 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