Како распоредити NestJS апликацију са Nginx-ом на Ubuntu VPS-у

U ovom članku ćemo detaljno objasniti kako postaviti vašu NestJS aplikaciju na Ubuntu virtuelni privatni server (VPS), koristeći Nginx kao posrednički server. Nginx je poznat po svojoj izvanrednoj efikasnosti i prilagodljivosti, što ga čini idealnim za upravljanje velikim prometom i zahtevnim aplikacijama.

Zašto odabrati NestJS i Nginx?

NestJS je okvir za kreiranje efikasnih i skalabilnih Node.js aplikacija, koji koristi TypeScript za osiguranje tipova. On pruža strukturu i organizaciju koda, pojednostavljuje testiranje i održavanje, omogućavajući vam da razvijate visokoperformantne veb aplikacije, REST API-je, mikroservise i još mnogo toga.

Nginx je, s druge strane, snažan i fleksibilan veb server koji se može koristiti kao reverzni proksi, veb server, keš server, i u mnogim drugim ulogama. Njegova efikasnost, skalabilnost i sposobnost rukovanja velikim prometom čine ga optimalnim izborom za vaše NestJS aplikacije.

Koraci za postavljanje NestJS aplikacije sa Nginx-om na Ubuntu VPS-u

1. Priprema VPS servera

  • Instalirajte Ubuntu VPS: Započnite sa svežom instalacijom Ubuntu VPS-a.
  • Ažurirajte sistem: Koristite komandnu liniju za ažuriranje Ubuntu sistema:
    sudo apt update && sudo apt upgrade -y
  • Instalirajte Node.js: Koristite npm (Node Package Manager) za instalaciju Node.js:
    sudo apt install nodejs npm -y
  • Provera verzije: Proverite verzije Node.js i npm:
    node -v
    npm -v

2. Instalacija Nginx-a

  • Instalirajte Nginx: Koristite komandnu liniju za instalaciju Nginx-a:
    sudo apt install nginx -y
  • Proverite status: Proverite da li Nginx radi:
    sudo systemctl status nginx

3. Konfiguracija Nginx-a

  • Otvorite konfiguracioni fajl:
    sudo nano /etc/nginx/sites-available/default
  • Dodajte Nginx blokove:
                    server {
                        listen 80;
                        server_name your-domain.com;
                        location / {
                            proxy_pass http://localhost:3000;
                            proxy_http_version 1.1;
                            proxy_set_header Upgrade $http_upgrade;
                            proxy_set_header Connection 'upgrade';
                            proxy_set_header Host $host;
                            proxy_cache_bypass $http_upgrade;
                        }
                    }
                

    Objašnjenje:

    • listen 80; – Definiše port na kojem će Nginx slušati (80 je standardni HTTP port).
    • server_name your-domain.com; – Zamenite your-domain.com sa vašim domenom.
    • proxy_pass http://localhost:3000; – Preusmerava zahteve na vaš NestJS server na portu 3000 (proverite da li je to pravi port za vašu aplikaciju).
    • proxy_http_version 1.1; – Koristi HTTP/1.1 protokol za proksiranje.
    • proxy_set_header... – Postavlja zaglavlja za proksiranje.
  • Sačuvajte i zatvorite fajl.

4. Pokrenite Nginx:
sudo systemctl restart nginx

5. Postavite NestJS aplikaciju

  • Izgradite NestJS aplikaciju: Koristite komandu npm run build za kreiranje izvršne datoteke vaše NestJS aplikacije.
  • Prebacite datoteke: Prebacite izvršnu datoteku na VPS server (koristite FTP klijent ili scp komandu).
  • Pokrenite NestJS server: Koristite komandu npm start za pokretanje NestJS servera.

6. Testiranje i održavanje

  • Proverite učitavanje veb stranice: Otvorite pregledač i posetite vaš domen (npr. your-domain.com).
  • Nadgledajte status Nginx-a: Koristite sudo systemctl status nginx za proveru rada Nginx-a.
  • Restartujte Nginx: Koristite sudo systemctl restart nginx za ponovno pokretanje Nginx-a.
  • Ažurirajte NestJS aplikaciju: Kada su dostupna ažuriranja za vašu aplikaciju, prebacite nove datoteke na server i restartujte NestJS i Nginx servere.

Dodatna razmatranja

  • SSL sertifikati: Za sigurniju veb komunikaciju, koristite SSL sertifikate za vaš domen.
  • Keširanje: Nginx nudi mogućnost keširanja statičkih sadržaja radi poboljšanja performansi.
  • Log fajlovi: Nginx generiše log fajlove koji sadrže informacije o zahtevima i greškama.
  • Zaštita od DDoS napada: Nginx može pomoći u zaštiti od DDoS napada konfiguracijom odgovarajućih pravila.

Zaključak

Postavljanje NestJS aplikacije sa Nginx-om na Ubuntu VPS-u je relativno jednostavan proces. Prateći gore opisane korake, možete uspešno postaviti vaše veb aplikacije na server i iskoristiti sve prednosti koje Nginx pruža. Nginx je moćan alat koji vam može pomoći da optimizujete performanse, skalabilnost i sigurnost vašeg veb sajta, čime se postiže optimalno korisničko iskustvo.

Često postavljana pitanja (FAQ)

1. Šta je Nginx?
Nginx je izuzetno efikasan i prilagodljiv veb server koji se koristi kao reverzni proksi, veb server, keš server i još mnogo toga. Poznat je po svojoj skalabilnosti i sposobnosti da upravlja velikim prometom.

2. Zašto je Nginx odličan izbor za NestJS aplikacije?
Nginx je idealan za NestJS aplikacije zbog svoje efikasnosti, skalabilnosti i sposobnosti da se ponaša kao reverzni proksi za te aplikacije.

3. Kako instalirati Nginx?
Nginx se instalira na Ubuntu VPS-u komandom sudo apt install nginx -y.

4. Kako konfigurisati Nginx za NestJS aplikaciju?
Konfigurišite Nginx tako što ćete urediti fajl /etc/nginx/sites-available/default i dodati blokove koji će preusmeravati zahteve na vaš NestJS server.

5. Kako pokrenuti Nginx?
Nginx se pokreće komandom sudo systemctl restart nginx.

6. Kako postaviti NestJS aplikaciju na Ubuntu VPS?
Izgradite NestJS aplikaciju, prebacite datoteke na VPS, pokrenite NestJS server i konfigurišite Nginx da proksira zahteve ka vašem NestJS serveru.

7. Kako ažurirati NestJS aplikaciju na serveru?
Prebacite nove datoteke na server i restartujte NestJS i Nginx servere.

8. Šta su SSL sertifikati?
SSL sertifikati su digitalni sertifikati koji se koriste za enkripciju komunikacije između veb servera i pregledača, čineći veb sajt sigurnijim.

9. Šta je keširanje?
Keširanje je tehnika za bržu isporuku statičkih sadržaja veb sajta, što poboljšava performanse.

10. Gde mogu pronaći više informacija o Nginx-u?
Više informacija o Nginx-u možete pronaći na zvaničnom sajtu: https://nginx.org/

Tagovi: NestJS, Nginx, Ubuntu, VPS, postavljanje, veb aplikacije, reverzni proksi, Node.js, TypeScript, veb server, keširanje, SSL sertifikati, DDoS, log fajlovi.