Napredne usluge
VPS

Kako instalirati i konfigurirati Nginx na Ubuntu

Nginx je jedan od najpopularnijih web poslužitelja na svijetu, odgovoran za hosting nekih od najvećih i najprometnijih web stranica. Lagan je i može se koristiti kao web poslužitelj ili kao obrnuti proxy (reverse proxy).

Ovaj vodič objašnjava kako instalirati Nginx na vaš Ubuntu poslužitelj, prilagoditi vatrozid, upravljati Nginx procesom i postaviti serverske blokove (server blocks) za hosting više domena s jednog poslužitelja.

Preduvjeti

Prije nego započnete s ovim vodičem, trebali biste imati:

  1. Regularnog, ne-root korisnika s sudo ovlastima konfiguriranog na vašem poslužitelju.
  2. (Opcionalno) Registriranu domenu ako želite dovršiti korake vezane uz postavljanje serverskih blokova za specifičnu domenu.

Kada imate dostupan korisnički račun, prijavite se kao vaš ne-root korisnik da biste započeli.

Korak 1 – Instaliranje Nginxa

Budući da je Nginx dostupan u zadanim Ubuntu repozitorijima, moguće ga je instalirati pomoću apt sustava za upravljanje paketima.

Prvo ćemo ažurirati lokalni indeks paketa kako bismo imali pristup najnovijim popisima paketa. Nakon toga, možemo instalirati nginx:

sudo apt update
sudo apt install nginx

Nakon što prihvatite proceduru, apt će instalirati Nginx i sve potrebne ovisnosti na vaš poslužitelj.

Korak 2 – Podešavanje Vatrozida

Prije testiranja Nginxa, potrebno je prilagoditi softver vatrozida kako bi se omogućio pristup servisu. Nginx se prilikom instalacije registrira kao servis kod ufw (Uncomplicated Firewall), što olakšava dopuštanje Nginx pristupa.

Izlistajte konfiguracije aplikacija koje ufw prepoznaje upisivanjem:

sudo ufw app list

Trebali biste dobiti popis profila aplikacija:

Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

Naravno, evo nacrta Wiki stranice za instalaciju Nginxa na Ubuntu, temeljenog na priloženom tutorialu, prevedenog i prilagođenog za Wiki format.


Kako instalirati i konfigurirati Nginx na Ubuntu

Nginx je jedan od najpopularnijih web poslužitelja na svijetu, odgovoran za hosting nekih od najvećih i najprometnijih web stranica. Lagan je i može se koristiti kao web poslužitelj ili kao obrnuti proxy (reverse proxy).

Ovaj vodič objašnjava kako instalirati Nginx na vaš Ubuntu poslužitelj, prilagoditi vatrozid, upravljati Nginx procesom i postaviti serverske blokove (server blocks) za hosting više domena s jednog poslužitelja.

Preduvjeti

Prije nego započnete s ovim vodičem, trebali biste imati:

  1. Regularnog, ne-root korisnika s sudo ovlastima konfiguriranog na vašem poslužitelju.
  2. (Opcionalno) Registriranu domenu ako želite dovršiti korake vezane uz postavljanje serverskih blokova za specifičnu domenu.

Kada imate dostupan korisnički račun, prijavite se kao vaš ne-root korisnik da biste započeli.

Korak 1 – Instaliranje Nginxa

Budući da je Nginx dostupan u zadanim Ubuntu repozitorijima, moguće ga je instalirati pomoću apt sustava za upravljanje paketima.

Prvo ćemo ažurirati lokalni indeks paketa kako bismo imali pristup najnovijim popisima paketa. Nakon toga, možemo instalirati nginx:

apt update
apt install nginx

Nakon što prihvatite proceduru, apt će instalirati Nginx i sve potrebne ovisnosti na vaš poslužitelj.

Korak 2 – Podešavanje Vatrozida

Prije testiranja Nginxa, potrebno je prilagoditi softver vatrozida kako bi se omogućio pristup servisu. Nginx se prilikom instalacije registrira kao servis kod ufw (Uncomplicated Firewall), što olakšava dopuštanje Nginx pristupa.

Izlistajte konfiguracije aplikacija koje ufw prepoznaje upisivanjem:

 ufw app list

Trebali biste dobiti popis profila aplikacija:

Output
Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

Kao što je prikazano u izlazu, dostupna su tri profila za Nginx:

  • Nginx Full: Ovaj profil otvara oba porta, 80 (normalan, neenkriptiran web promet) i 443 (TLS/SSL enkriptiran promet).
  • Nginx HTTP: Ovaj profil otvara samo port 80 (normalan, neenkriptiran web promet).
  • Nginx HTTPS: Ovaj profil otvara samo port 443 (TLS/SSL enkriptiran promet).

Preporučuje se omogućiti najrestriktivniji profil koji će i dalje dopuštati promet koji ste konfigurirali. Za sada ćemo trebati dopustiti samo promet na portu 80.

Možete to omogućiti upisivanjem:

ufw allow ‘Nginx HTTP’

Promjenu možete provjeriti upisivanjem:

ufw status

Izlaz će pokazati koji je HTTP promet dopušten:

Output
Status: active

To Action From
— —— —-
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)

 

Korak 3 – Provjera Vašeg Web Poslužitelja

Na kraju procesa instalacije, Ubuntu pokreće Nginx. Web poslužitelj bi već trebao biti pokrenut i raditi.

Možemo provjeriti sa systemd init sustavom da li servis radi upisivanjem:

systemctl status nginx

Output
● nginx.service – A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process

Kao što potvrđuje ovaj izlaz, servis je uspješno pokrenut. Međutim, najbolji način da ovo testirate je da zatražite stranicu od Nginxa.

Možete pristupiti zadanoj Nginx odredišnoj stranici kako biste potvrdili da softver ispravno radi tako da odete na IP adresu vašeg poslužitelja. Ako ne znate IP adresu vašeg poslužitelja, možete je pronaći pomoću alata icanhazip.com ili upisivanjem ip a u terminalu vašeg poslužitelja.

Ako koristite ipadresa.com (ovo će vam dati vašu javnu IP adresu kako je vidi vanjski poslužitelj):

curl -4 icanhazip.com

Korak 4 – Upravljanje Nginx Procesom

Sada kada imate pokrenut web poslužitelj, pregledajmo neke osnovne naredbe za upravljanje.

sudo systemctl stop nginx

sudo systemctl start nginx

sudo systemctl restart nginx

sudo systemctl disable nginx

sudo systemctl enable nginx

Korak 5 – Postavljanje Serverskih Blokova (Preporučeno)

Kada koristite Nginx web poslužitelj, serverski blokovi (slično virtualnim hostovima u Apacheu) mogu se koristiti za enkapsulaciju konfiguracijskih detalja i hostiranje više od jedne domene s jednog poslužitelja. Postavit ćemo domenu nazvanu VAŠA_DOMENA, ali trebali biste zamijeniti ovo s vlastitim nazivom domene.

Nginx na Ubuntuu ima jedan serverski blok omogućen prema zadanim postavkama koji je konfiguriran da poslužuje dokumente iz direktorija /var/www/html. Iako ovo dobro funkcionira za jedno web mjesto, može postati nespretno ako hostirate više web mjesta. Umjesto da mijenjamo /var/www/html, stvorimo strukturu direktorija unutar /var/www za naše web mjesto VAŠA_DOMENA, ostavljajući /var/www/html na mjestu kao zadani direktorij koji će se posluživati ako zahtjev klijenta ne odgovara nijednom drugom web mjestu.

Stvorite direktorij za VAŠA_DOMENA na sljedeći način, koristeći zastavicu -p za stvaranje svih potrebnih roditeljskih direktorija:

sudo mkdir -p /var/www/VAŠA_DOMENA/html

Zatim dodijelite vlasništvo nad direktorijem pomoću varijable okruženja $USER:

sudo chown -R $USER:$USER /var/www/VAŠA_DOMENA/html

Dozvole vaših web korijena trebale bi biti ispravne ako niste mijenjali svoju umask vrijednost, koja postavlja zadane dozvole datoteka. Da biste osigurali da su vaše dozvole ispravne i omogućili vlasniku čitanje, pisanje i izvršavanje datoteka, dok grupama i ostalima dajete samo dozvole za čitanje i izvršavanje, možete unijeti sljedeću naredbu:

sudo chmod -R 755 /var/www/VAŠA_DOMENA

Zatim stvorite primjer index.html stranice koristeći nano ili vaš omiljeni editor:

sudo nano /var/www/VAŠA_DOMENA/html/index.html

Unutra dodajte sljedeći primjer HTML-a:

<html>
    <head>
        <title>Dobrodošli na VAŠA_DOMENA!</title>
    </head>
    <body>
        <h1>Uspjeh! Serverski blok VAŠA_DOMENA radi!</h1>
    </body>
</html>

Spremite i zatvorite datoteku pritiskom na Ctrl+X za izlaz, zatim kada vas pita da spremite, Y (ili D za Da, ovisno o lokalizaciji) i zatim Enter.

Da bi Nginx posluživao ovaj sadržaj, potrebno je stvoriti serverski blok s ispravnim direktivama. Umjesto da izravno mijenjamo zadanu konfiguracijsku datoteku, napravimo novu na /etc/nginx/sites-available/VAŠA_DOMENA:

sudo nano /etc/nginx/sites-available/VAŠA_DOMENA

Zalijepite sljedeći konfiguracijski blok, koji je sličan zadanom, ali ažuriran za naš novi direktorij i naziv domene:

Nginx

server {
        listen 80;
        listen [::]:80;

        root /var/www/VAŠA_DOMENA/html;
        index index.html index.htm index.nginx-debian.html;

        server_name VAŠA_DOMENA www.VAŠA_DOMENA;

        location / {
                try_files $uri $uri/ =404;
        }
}

Primijetite da smo ažurirali root konfiguraciju na naš novi direktorij, a server_name na naš naziv domene.

Zatim omogućimo datoteku stvaranjem simboličke veze (symlink) iz nje u direktorij sites-enabled, iz kojeg Nginx čita tijekom pokretanja:

sudo ln -s /etc/nginx/sites-available/VAŠA_DOMENA /etc/nginx/sites-enabled/

Sada su dva serverska bloka omogućena i konfigurirana da odgovaraju na zahtjeve na temelju njihovih listen i server_name direktiva.

Da biste izbjegli mogući problem s memorijom hash bucketa koji može nastati dodavanjem dodatnih naziva poslužitelja, potrebno je prilagoditi jednu vrijednost u datoteci /etc/nginx/nginx.conf. Otvorite datoteku:

 nano /etc/nginx/nginx.conf

Pronađite direktivu server_names_hash_bucket_size i uklonite simbol # da biste dekomentirali redak. Ako koristite nano, možete brzo pretraživati riječi u datoteci pritiskom na CTRL i w.

Nginx

...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

Spremite i zatvorite datoteku kada završite.

Zatim testirajte da nema sintaktičkih pogrešaka ni u jednoj od vaših Nginx datoteka:

sudo nginx -t

Ako nema problema, ponovno pokrenite Nginx da biste omogućili promjene:


sudo systemctl restart nginx

Nginx bi sada trebao posluživati vašu domenu. To možete testirati tako da odete na http://VAŠA_DOMENA, gdje biste trebali vidjeti stranicu koju ste kreirali.

Korak 6 – Upoznavanje s Važnim Nginx Datotekama i Direktorijima

Sada kada znate kako upravljati samim Nginx servisom, trebali biste odvojiti nekoliko minuta da se upoznate s nekoliko važnih direktorija i datoteka.

Sadržaj

  • /var/www/html: Stvarni web sadržaj, koji se prema zadanim postavkama sastoji samo od zadane Nginx stranice koju ste ranije vidjeli, poslužuje se iz direktorija /var/www/html. To se može promijeniti izmjenom Nginx konfiguracijskih datoteka.

Konfiguracija Poslužitelja

  • /etc/nginx: Nginx konfiguracijski direktorij. Sve Nginx konfiguracijske datoteke nalaze se ovdje.
  • /etc/nginx/nginx.conf: Glavna Nginx konfiguracijska datoteka. Može se mijenjati kako bi se unijele promjene u globalnu Nginx konfiguraciju.
  • /etc/nginx/sites-available/: Direktorij gdje se mogu pohraniti serverski blokovi za pojedinačne stranice. Nginx neće koristiti konfiguracijske datoteke pronađene u ovom direktoriju osim ako nisu povezane (linkane) s direktorijem sites-enabled. Tipično, sva konfiguracija serverskih blokova radi se u ovom direktoriju, a zatim se omogućuje povezivanjem s drugim direktorijem.
  • /etc/nginx/sites-enabled/: Direktorij gdje se pohranjuju omogućeni serverski blokovi za pojedinačne stranice. Tipično, oni se stvaraju povezivanjem s konfiguracijskim datotekama pronađenim u direktoriju sites-available.
  • /etc/nginx/snippets: Ovaj direktorij sadrži konfiguracijske fragmente koji se mogu uključiti drugdje u Nginx konfiguraciju. Potencijalno ponovljivi segmenti konfiguracije dobri su kandidati za refaktoriranje u isječke (snippets).

Dnevnici (Logovi) Poslužitelja

  • /var/log/nginx/access.log: Svaki zahtjev vašem web poslužitelju bilježi se u ovoj datoteci dnevnika, osim ako Nginx nije konfiguriran drugačije.
  • /var/log/nginx/error.log: Sve Nginx pogreške bit će zabilježene u ovom dnevniku.

Često Postavljana Pitanja (FAQ)

  • Za što se koristi Nginx? Nginx je popularan open-source softver za web poslužitelje koji se može koristiti za razne svrhe, uključujući: posluživanje statičkog sadržaja (HTML, CSS, slike, itd.), djelovanje kao obrnuti proxy poslužitelj, balansiranje opterećenja, SSL/TLS terminaciju, i prepisivanje i preusmjeravanje URL-ova.

  • Kako instalirati Nginx na Ubuntu? Pratite korake u ovom vodiču: ažurirajte indeks paketa (sudo apt update), instalirajte Nginx (sudo apt install nginx).

  • Kako pokrenuti i omogućiti Nginx? Za pokretanje Nginxa: sudo systemctl start nginx. Za omogućavanje automatskog pokretanja Nginxa pri podizanju sustava: sudo systemctl enable nginx.

  • Kako provjeriti da li Nginx radi? Koristite naredbu: sudo systemctl status nginx.

  • Kako osigurati Nginx sa SSL-om? Potrebno je nabaviti SSL certifikat i konfigurirati Nginx da ga koristi. Tipično, to uključuje dodavanje listen 443 ssl; direktive i specificiranje putanja do vašeg certifikata (ssl_certificate) i privatnog ključa (ssl_certificate_key) unutar serverskog bloka. Preporučuje se korištenje alata poput Certbota za Let’s Encrypt certifikate.

Zaključak

Sada kada imate instaliran web poslužitelj, imate mnogo opcija za vrstu sadržaja koji ćete posluživati i tehnologije koje želite koristiti za stvaranje bogatijeg iskustva.