Blog članak

Kako posluziti static Astro site s Nginxom na Ubuntu 24.04

Praktičan checklist za deploy static Astro sitea s Nginxom na Ubuntu 24.04, uključujući caching, permissions i asset handling.

Astro je dobar fit za static publishing jer runtime drži jednostavnim. Kad je site jednom izgrađen, Nginx treba raditi samo jednu stvar: posluzivati datoteke brzo i dosljedno.

To je glavni razlog zašto su static siteovi laki za skaliranje i jeftini za hosting. Trik nije u frameworku, nego u deployment procesu oko njega.

Krenite s potpunim buildom

Uvijek deployajte cijeli output directory iz build koraka. Djelomican upload najcesci je razlog za slomljen CSS, nedostajuće slike ili HTML stranice koje se učitaju bez asseta.

Prije kopiranja bilo cega na server provjerite da build sadrži sve očekivane direktorije:

npm run build
ls -la dist

Ako site koristi hashed assete ili optimizirane slike, provjerite da su i ti folderi prisutni u finalnom outputu. Nemojte kopirati samo HTML datoteke.

Koristite jednostavan Nginx layout

Za static site Nginx config treba biti jednostavan. Cilj je assete posluživati izravno, vratiti pravi 404 kada nešto nedostaje i izbjeci da se zahtjevi prepisuju u HTML.

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    root /var/www/example.com/current;
    index index.html;

    location ^~ /_astro/ {
        try_files $uri =404;
        access_log off;
        expires 1y;
        add_header Cache-Control "public, max-age=31536000, immutable" always;
    }

    location ^~ /__optimized/ {
        try_files $uri =404;
        access_log off;
        expires 1y;
        add_header Cache-Control "public, max-age=31536000, immutable" always;
    }

    location / {
        try_files $uri $uri/ /index.html;
    }
}

Taj obrazac drži site predvidljivim. Ako asset nedostaje, Nginx bi trebao vratiti pravi 404, a ne fallback HTML stranicu.

Popravite permissions prije reloada

Permissions su važniji nego što mnogi očekuju. Ako web server ne može proći kroz direktorij, site može pasti iako su datoteke prisutne.

sudo chown -R ubuntu:ubuntu /var/www/example.com/current
sudo find /var/www/example.com/current -type d -exec chmod 755 {} \;
sudo find /var/www/example.com/current -type f -exec chmod 644 {} \;
sudo nginx -t
sudo systemctl reload nginx

To deployment čini sigurnim i lakim za debugiranje. Ako config prodje test, a browser i dalje pokazuje greške, pregledajte access i error logove prije nego mijenjate aplikaciju.

Držite deployment ponovljivim

Najbolji deploy je onaj koji možete ponoviti bez pogađanja. Pouzdan proces obično izgleda ovako:

  1. Izgradite site lokalno.
  2. Uploadajte cijeli dist direktorij.
  3. Promovirajte ga u live web root.
  4. Popravite ownership i permissions.
  5. Testirajte Nginx config.
  6. Reloadajte servis.

To je jednostavno, ali sprječava mnogo downtimea. Također čini buduce troubleshootinge puno brzim jer je failure point lakše identificirati.

Ako vodite static Astro site na malom VPS-u, ovo je setup koji bih prvo preporucio.

Povezane usluge

Ove su usluge usklađene s temom članka i daju čišći prijelaz od edukativnog sadržaja do konkretne implementacije.

Nastavite čitati

Prvo po zajedničkim kategorijama, a zatim po najjačem preklapanju u tagovima.