Kako instalirati Nginx s Encrypt TLS/SSL na Ubuntu 20.04

Nginx je besplatni softver za HTTP poslužitelj otvorenog koda. Osim svojih mogućnosti HTTP poslužitelja, NGINX također može funkcionirati kao proxy poslužitelj za e-poštu (IMAP, POP3 i SMTP) te obrnuti proxy i balansator opterećenja za HTTP, TCP i UDP poslužitelje. Cilj iza NGINX-a bio je stvoriti najbrži web poslužitelj na svijetu, a održavanje te izvrsnosti i dalje je središnji cilj Nginx projekta. NGINX dosljedno pobjeđuje Apache i druge poslužitelje u mjerilima mjerenja performansi web poslužitelja i sada je najpopularniji korišteni web poslužitelj prema W3Techu.

U sljedećem vodiču naučit ćete instalirati Nginx na Ubuntu 20.04 LTS koristeći zadano Ubuntu spremište ili alternativni PPA od Ondřeja Surýa s besplatnim TLS/SSL certifikatom iz Let's Encrypt.

Preduvjeti

  • Preporučeni OS: Ubuntu 20.04 ili više
  • Korisnički račun: Korisnički račun sa sudo ili root pristupom.

Ažuriranje operativnog sustava

Ažurirajte svoj Ubuntu operativni sustav kako biste bili sigurni da su svi postojeći paketi do danas:

sudo apt update && sudo apt upgrade

Root ili Sudo pristup

Prema zadanim postavkama, račun kreiran s Ubuntuom davao je sudo status. Ipak, pretpostavimo da trebate osigurati dodatni sudo/root pristup računima. U tom slučaju morate imati pristup root lozinka koristiti naredba su ili posjetite naš vodič na Kako dodati korisnika u Sudoers na Ubuntu.


Oglas


Instalirajte Nginx

Metoda 1. Instalirajte Nginx Stable iz Ubuntu repozitorija

Prva metoda je instaliranje Nginxa iz Ubuntuovih zadanih repozitorija, a ove su verzije dokazano stabilne i sigurne. Ako trebate pokrenuti primarni web poslužitelj ili obrnuti proxy, često se preporučuje instaliranje paketa Ubuntu repozitorija.

Da biste instalirali Nginx, pokrenite sljedeću naredbu.

sudo apt install nginx

Primjer rezultata:

Kako instalirati Nginx s Encrypt TLS/SSL na Ubuntu 20.04

Tip "Y", a zatim pritisnite "ENTER TIPKA" za nastavak instalacije.

Zatim provjerite verziju verzije i je li instalacija bila uspješna.

sudo nginx -v

Primjer rezultata:

nginx version: nginx/1.18.0

Metoda 2. Instalirajte najnoviji Nginx Stable ili Mainline s Ondřej Surý PPA

Alternativno, umjesto da instalirate zadanu Nginx stabilnu verziju iz repozitorija Ubuntu 20.04, možete instalirati ili Nginx Stable ili Mainline koristeći PPA od Ondřeja Surýa, PHP održavatelja za Debian.

Instalirajte jedan od sljedećih PPA-a sljedećom naredbom:

Instalirajte najnoviji Nginx (STABILNO):

sudo add-apt-repository ppa:ondrej/nginx-stable -y && sudo apt update

Instalirajte najnoviji Nginx (MAINLINE):

sudo add-apt-repository ppa:ondrej/nginx-mainline -y && sudo apt update

Sada kada ste instalirali PPA i ažurirali popis spremišta, instalirajte Nginx sa sljedećim:

sudo apt install nginx-core nginx-common nginx nginx-full

Primjer rezultata:

Kako instalirati Nginx s Encrypt TLS/SSL na Ubuntu 20.04

Tip "Y", a zatim pritisnite "ENTER TIPKA" za nastavak instalacije.

Zatim provjerite verziju verzije i je li instalacija bila uspješna.

sudo nginx -v

Primjer izlaza (iz glavne linije):

nginx version: nginx/1.18.0

Sada provjerite je li najnoviji Nginx iz spremišta Ondřej Surý instaliran pomoću naredba politike apt-cache, Napomena, tutorial primjer instaliran Nginx Mainline:

apt-cache policy nginx

Primjer izlaza za Nginx glavna linija:

Kako instalirati Nginx s Encrypt TLS/SSL na Ubuntu 20.04

Imajte na umu da se od vas može tražiti da zadržite ili zamijenite postojeće / etc / nginx /nginx.conf konfiguracijsku datoteku tijekom instalacije ako ste prethodno imali instaliran Nginx. Preporuča se zadržati svoju trenutnu konfiguracijsku datoteku pritiskom na (N). Kopija će se napraviti bez obzira na verziju održavatelja, a to također možete provjeriti u budućnosti.

Primijetit ćete da će u ovoj verziji biti dostupni dodatni moduli, ponajprije podrška za brotli. Instalirati brotli, slijedite korake u nastavku.

Otvorite svoj nginx.conf konfiguracijska datoteka:

nano /etc/nginx/nginx.conf

Sada dodajte dodatne retke prije u HTTP{} odjeljak:

brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
   application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
   application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
   font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
   image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;

Franjevački brotli_comp_level može se postaviti između 1 (najniža) i 11 (najviše). Obično se većina poslužitelja nalazi u sredini, ali ako je vaš poslužitelj čudovište, postavite na 11 i pratite razine korištenja CPU-a.

Zatim testirajte kako biste bili sigurni da promjene rade ispravno prije nego što ih objavite:

sudo nginx -t

Ako promjene rade ispravno, trebali biste vidjeti sljedeće:

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

Sada izvršite promjene uživo ponovnim pokretanjem poslužitelja:

sudo systemctl restart nginx
sudo systemctl status nginx

Primjer rezultata:

Kako instalirati Nginx s Encrypt TLS/SSL na Ubuntu 20.04

UFW konfiguracija

Prema zadanim postavkama, UFW je instaliran na Ubuntu 20.04. Ako koristite UFW ili želite jasniji prikaz pokretanja vatrozida, koristite informacije u nastavku da biste konfigurirali UFW za Nginx.

Ako UFW nije instaliran, ponovno instalirajte vatrozid pomoću sljedeće naredbe:

sudo apt install ufw -y

Zatim omogućite UFW sljedećom naredbom.

sudo ufw enable

Prema zadanim postavkama, sve dolazne veze su sada blokirane, a sve odlazne su dopuštene.

Zatim saznajte koje ste aplikacije instalirali unosom sljedećeg.

sudo ufw app list

Primjer izlaza (Imajte na umu da će se pojaviti opsežan popis i drugih aplikacija):

 Available applications:
   Nginx Full
   Nginx HTTP
   Nginx HTTPS

Zatim možete omogućiti Nginx u HTTP (port 80), HTTPS (port 443) ili Full, uključujući sve opcije.

HTTP (port 80):

sudo ufw allow 'Nginx HTTP'

HTTP (port 443):

sudo ufw allow 'Nginx HTTPS'

HTTP & HTTPS (puna):

sudo ufw allow 'Nginx FULL'

u tutorialu, "Nginx (pun)" bila omogućena.

Primjer rezultata:

 Rules updated
 Rules updated (v6)

Potvrdite da su pravila vatrozida aktivna sljedećom naredbom.

sudo ufw status

Vidjet ćete pravila navedena u izlazu.

 Status: active
 To                         Action      From
 --                         ------      ----
 Nginx Full                 ALLOW       Anywhere                  
 Nginx Full (v6)          ALLOW       Anywhere (v6) 

Nakon što je UFW konfiguriran, provjerite možete li vidjeti Nginx odredišnu stranicu u svom internetskom pregledniku.

http://your_server_ip

Ako sve radi dobro, trebali biste doći na sljedeću stranicu:

Kako instalirati Nginx s Encrypt TLS/SSL na Ubuntu 20.04

Oglas


Konfigurirajte Nginx poslužitelj

Morat ćete imati spremnu IP adresu poslužitelja za postavljanje. Najlakši način da to učinite je sljedećim.

Pronađite IP adresu poslužitelja

Morat ćete imati spremnu IP adresu poslužitelja za postavljanje. Najlakši način da to učinite je sljedećim.

curl -4 icanhazip.com

Primjer rezultata:

XXX.XXX.XXX.XXX IP address

Ako se pojavi pogreška, vjerojatno ćete morati instalirati curl paket na svoj sustav. Brzo pokrenite ovu naredbu:

sudo apt install curl -y

Postavite izvorni direktorij web-mjesta

Nginx blokovi poslužitelja (slično virtualnim hostovima u Apacheu) može enkapsulirati pojedinosti o konfiguraciji i hostirati više od jedne domene s jednog poslužitelja. U tutorialu ćete postaviti domenu pod nazivom example.com, ali trebali biste zamijenite ovo imenom svoje domene.

Kada instalirate Nginx, on se kreira s unaprijed instaliranim www direktorijem. Lokacija se nalazi na / Var / www / html /.

Prvo stvorite imenik za example.com, kako slijedi, koristeći oznaku "-p" za izradu svih potrebnih roditeljskih direktorija:

sudo mkdir -p /var/www/example.com/html

Drugo, morat ćete dodijeliti vlasnika imenika.

sudo chown -R $USER:$USER /var/www/your_domain/html

Treće, dodijelite dozvole direktoriju kako bi vlasnik čitao, pisao i izvršavao datoteke dok grupama i drugima daje dopuštenja samo za čitanje i izvršavanje. Možete unijeti sljedeću naredbu:

sudo chmod -R 755 /var/www/your_domain

Postavite testnu HTML stranicu

Četvrto, stvorite testnu stranicu koju ćete koristiti da potvrdite da vaš Nginx poslužitelj radi.

nano /var/www/your_domain/html/index.html

Unutar nano uređivača i nove datoteke koju ste stvorili. Unesite sljedeće.

<html>
 <head>
  <title>Welcome to your_domain!</title>
 </head>
 <body>
   <h1>Success!  The your_domain server block is working!</h1>
 </body>
</html>

Spremite datoteku CTRL+O, zatim izađi CTRL + X.

Napravite blok poslužitelja Nginx

Sada ćete stvoriti blok poslužitelja za svoju web stranicu. Napravit ćemo novi blok poslužitelja na sljedeći način.

sudo nano /etc/nginx/sites-available/your_domain.conf

Sljedeći primjer koda možete zalijepiti u blok. Ovo je samo jedan Primjer samo za HTTP za osnovno ispitivanje.

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

 root /var/www/your_domain/html;

  index index.html index.htm index.nginx-debian.html;
  server_name your_domain www.your_domain;

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

Primjer pokazuje da vaš poslužitelj osluškuje dva imena poslužitelja, "vaša_domena" na luci 80.

Morat ćete promijeniti korijenski direktorij u ime/lokaciju korijenskog direktorija koji ste stvorili.

Omogućite blokiranje Nginx poslužitelja

Da biste omogućili blokove Nginx poslužitelja, morate povezati konfiguracijske datoteke sa web-mjesta-dostupnih na web-mjestima s omogućenim u vašem Nginx direktoriju. To se može učiniti naredbom ln -s na sljedeći način.

sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/

Konačna konfiguracija i probni rad

U završnoj fazi morat ćete otvoriti zadani nginx.conf file.

sudo nano /etc/nginx/nginx.conf

I dekomentirajte sljedeći redak.

server_names_hash_bucket_size 64;

Veličina hash bucketa naziva poslužitelja se mijenja jer ponekad nastaju problemi zbog dodavanja dodatnih poslužitelja.

Zatim testirajte svoj Nginx kako biste bili sigurni da radi prije pravilnog ponovnog pokretanja.

sudo nginx -t

Izlaz bi trebao biti ako nema pogrešaka u sintaksi:

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

Ako imate sljedeći u redu izlaz, ponovno pokrenite Nginx poslužitelj kako bi se promjene izvršile.

sudo systemctl restart nginx

Sada otvorite svoj Internet preglednik i upišite naziv domene poslužitelja. Trebali biste vidjeti da je vaš blok poslužitelja aktivan.

Kako instalirati Nginx s Encrypt TLS/SSL na Ubuntu 20.04

Osigurajte Nginx s Let's Encrypt SSL Free certifikatom

U idealnom slučaju, želite pokrenuti svoj Nginx HTTPS pomoću SSL certifikata. Najbolji način da to učinite je korištenje Hajdemo šifrirati, besplatno, automatizirano i otvoreno certifikacijsko tijelo koje vodi neprofitna grupa za istraživanje internetske sigurnosti (ISRG).

Prvo, instalirajte certbot paket kako slijedi:

sudo apt install python3-certbot-nginx -y

Nakon instalacije, pokrenite sljedeću naredbu da započnete kreiranje certifikata:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com

Ovo je idealno postavljanje koje uključuje prisilno HTTPS 301 preusmjeravanje, zaglavlje Strict-Transport-Security i OCSP spajanje. Samo pazite da prilagodite e-poštu i naziv domene svojim zahtjevima.

Sada će vaš URL biti HTTPS://www.example.com umjesto HTTP://www.example.com.

Napomena, ako koristite stari HTTP URL, automatski će se preusmjeriti na HTTPS.


Oglas


Kako pristupiti zapisnicima Nginx poslužitelja

Nginx direktorij dnevnika

Prema zadanim postavkama, svi NGINX zapisnici pristupa/pogreška, osim ako ih niste promijenili, nalaze se u direktoriju dnevnika koji može vidjeti sljedeća naredba.

Prvo idite do direktorija dnevnika i datoteka s popisom:

cd /var/log/nginx && ls -l

Trebali biste pronaći sljedeće datoteke pristupa i pogrešaka:

Dnevnik pristupa:

/var/log/nginx/access.log

Zapisnik pogrešaka:

/var/log/nginx/error.log

Za pregled zapisnika u stvarnom vremenu na vašem terminalu pomoću naredbe sudo tail -f /location/of/log path.

Primjer:

sudo tail -f /var/log/nginx/access.log

Druga je mogućnost ispisati zadnjih X redaka. Na primjer, X se zamjenjuje s 30 za ispis 30 redaka dodavanjem -n 30 zastava.

sudo tail -f /var/log/nginx/access.log -n 30

Ovo su samo neki primjeri čitanja dnevnika.

Kako konfigurirati rotiranje dnevnika Nginxa

Nginx automatski instalira rotaciju dnevnika i konfigurira je na zadanu vrijednost koja će se rotirati svakodnevno. Ove postavke možete promijeniti tako da pristupite datoteci kao što je prikazano u nastavku.

sudo nano /etc/nginx/logrotate.d/nginx

Zatim ćete vidjeti istu, ako ne i sličnu strukturu datoteke. Ovdje možete mijenjati sadržaj. Uglavnom možete promijeniti broj dnevnika za čuvanje ili prijeći s dnevnih na tjedni. Ovo bi trebalo ostaviti na zadanom, osim ako nemate posebne potrebe za evidencijom za softver kao što je praćenje fail2ban ili slično.

/var/log/nginx/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  create 0640 www-data adm
  sharedscripts
  prerotate
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
  run-parts /etc/logrotate.d/httpd-prerotate; \
  fi \
  endscript
  postrotate
  invoke-rc.d nginx rotate >/dev/null 2>&1
  endscript
}

Glavne postavke koje ćete vjerojatno htjeti promijeniti su sljedeće:

  • dnevno – Ovo se može promijeniti u Tjedno, Mjesečno. Ovo bi se trebalo održavati svakodnevno, inače će biti teško proći kroz datoteku dnevnika.
  • Zakreni 14 – Ovo je koliko zapisnika treba zadržati i ukloniti, tako da na maksimumu ima samo 14 dnevnika, ako želite zadržati samo 7 dana vrijedne zapisnika promijenite ovo na 7.

Preporuča se da ne dodirujete druge postavke osim ako znate što radite.

Kako ažurirati Nginx

Nginx će se ažurirati prema zadanim postavkama kada nova verzija stigne u spremišta. Prije nadogradnje uvijek se savjetuje da napravite sigurnosnu kopiju svog Nginx direktorija ili, u najmanju ruku, nginx.conf datoteka. Možete učiniti bilo što pomoću sljedeće naredbe.

Sigurnosno kopirajte nginx.conf (vrlo preporučljivo):

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf

Napravite sigurnosnu kopiju cijele mape Nginx ako želite:

sudo cp /etc/nginx/ /etc/nginx-bkup

Zatim pokrenite standardnu ​​naredbu za ažuriranje.

sudo apt update

Ako je dostupna nadogradnja, pokrenite je.

sudo apt upgrade 

Možda će vam se to zatražiti tijekom nadogradnje ili instalacije, ali ručno je to učiniti prije vrlo bitno. Za velike konfiguracije Nginxa na više stranica, sigurnosna kopija na nešto poput Githuba ili Gitlaba bila bi još korisnija.


Oglas


Komentari i zaključak

U tutorialu ste naučili instalirati i postaviti osnovnu konfiguraciju Nginxa na svoju domenu na Ubuntu 20.04 LTS i stvoriti besplatni SSL certifikat koristeći Let's Encrypt. Općenito, Nginx je trenutno najkorišteniji i najpopularniji softver za web aplikacije, a svaki mjesec i godina nadmašuju sve veći tržišni udio od Apachea.

Počinju se pojavljivati ​​neki novi kandidati, kao što je Openlitespeed, ali s obzirom na ove druge web aplikacije, za sada se usredotočite na određene stvari poput WordPressa. Nginx će neko vrijeme biti glavna web aplikacija.

Ostavite komentar