Hvordan installere Nginx på Ubuntu 20.04 LTS

Full trinn-for-trinn-guide for å installere og sette opp en Nginx-webserver på et Ubuntu 20.04-system

Nginx er en åpen kildekode og populær omvendt proxy-webserver tilgjengelig på flere plattformer. Programvaren er utviklet av Igor Sysoev som en løsning på C10K-problemet og først utgitt i 2004. C10K-problemet er problemet med å håndtere ti tusen klienter samtidig, noe som ikke var lett på begynnelsen av 2000-tallet.

I denne opplæringen ser vi på hvordan du installerer og konfigurerer Nginx på Ubuntu 20.04 LTS.

Forutsetninger

Et system med Ubuntu 20.04 installert og en sudo bruker. I tillegg trenger du ikke ha noen annen webserver som Apache som kjører på port 80 eller 443.

Installerer Nginx

Nginx er tilgjengelig i Ubuntu 20.04 repository og apt pakkebehandling kan brukes til å installere den. Så for å installere Nginx, åpne terminalen med ctrl+alt+t og løp:

sudo apt oppdatering && sudo apt installer nginx

Installasjonen vil snart fullføres og Nginx-demonen starter automatisk i bakgrunnen. Så for å sjekke statusen til Nginx, kjør:

sudo systemctl status nginx

Etter å ha kjørt kommandoen ovenfor bør du få Nginx-status som aktiv (løper) i grønt som vist nedenfor.

Konfigurere Ubuntu-brannmur (UFW)

Som standard er de utgående portene HTTP (80) og HTTPS (443) stengt på Ubuntu 20.04. I tillegg er standard brannmurdemon ufw er deaktivert ettersom alle portene er stengt.

For å få tilgang til Nginx-serveren fra andre systemer, må du derfor aktivere ufw og sett den opp riktig for å tillate trafikk på havn 80 og 443. Før du aktiverer ufw, vet at hvis du setter opp Nginx på en ekstern server, må du først oppdatere ufw regler for å tillate ssh ved å kjøre:

sudo ufw tillat ssh

Kommandoen ovenfor tillater ssh tilgang til den eksterne serveren, uten å tillate ssh du vil bli låst ute fra den eksterne serveren.

Etter aktivering ssh tilgang, kan du aktivere ufw brannmurdemon ved å kjøre:

sudo ufw aktiver

Nå må du endre brannmurreglene for å tillate HTTP- og HTTPS-porter slik at Nginx kan betjene nettrafikk. For å endre reglene, kjør:

sudo ufw tillate 'Nginx Full'

Nginx Full tillater både HTTP- og HTTPS-porter for innkommende og utgående trafikk fra alle IP-adresser.

Etter det, kontroller om reglene er lagt til på riktig måte ufw brannmur ved å kjøre kommandoen:

sudo ufw status

Kommandoen ovenfor vil gi ut reglene vi har lagt til ufw brannmurdemon.

Kobler til Nginx Server

Nå som vi har installert Nginx og konfigurert ufw for å tillate innkommende HTTP- og HTTPS-netttrafikk, bør du kunne få tilgang til Nginx-serveren ved å bruke IP-adressen til serveren.

Hvis du ikke kjenner serverens IP-adresse, bruk kommandoen nedenfor for å enkelt hente den.

ip-adr vis eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Når du har fått IP-adressen, lim den inn i nettleseren din og trykk enter.

//din-server-ip

Hvis alt var riktig konfigurert, bør du kunne se 'Velkommen til nginx!'-nettsiden.

Nginx filer og kataloger

Nå som vi har Nginx installert og kjører på serveren din. La oss ta en titt på noen av de viktige Nginx-filene og -katalogene du må bruke for å konfigurere nettstedet/webappen din.

Nettserverinnhold

Du kan konfigurere hvilken som helst plassering du vil være din rotkatalog for serverblokken din. Nginxs standard HTML direkte er /var/www/html, det er der "velkomstsiden" som vi åpnet tidligere, ligger.

Andre steder som vanligvis brukes som rotkatalog for domener inkluderer:

  • /hjem//
  • /var/www/html/
  • /opt/

Nginx-konfigurasjonsfiler

Alle Nginx-konfigurasjonsfilene er plassert i /etc/nginx katalog. La oss se på noen av de viktige filene vi trenger for å sette opp et grunnleggende domene.

  • /etc/nginx/nginx.conf: Denne filen inneholder all konfigurasjonen som trengs for å kjøre Nginx.
  • /etc/nginx/sites-available/: Denne katalogen har all serverblokkkonfigurasjon for domener, men er for øyeblikket ikke aktivert/distribuert og dermed ikke tilgjengelig for klienter.
  • /etc/nginx/sites-enabled/: Denne katalogen inneholder aktive/aktiverte domener som er tilgjengelige for klienter. For å aktivere et domene må vi koble domenekonfigurasjonsfilen fra nettsteder-tilgjengelige til nettsteder aktivert katalog.
  • /etc/nginx/snippets/: I denne katalogen kan vi lagre potensielt gjenbrukbare konfigurasjonssegmenter. Det sparer mye tid i produksjonsmiljøet på grunn av at det kan gjøre segmenter/blokker med konfigurasjon gjenbrukbare.

Serverlogger

Nginx logger hendelsene/aktivitetene og lagrer dem i loggfiler i /var/log/nginx katalog. Nginx logger aktiviteter i disse filene:

  • /var/log/nginx/access.log: Denne filen logger klientene som har fått tilgang til Nginx-serveren. Detaljer inkluderer IP-adressen til klienten, klokkeslett og dato, nettleser som brukes for å få tilgang til serveren og operativsystemet.
  • /var/log/nginx/error.log: Denne filen logger feilene som oppstår av Nginx-serveren under kjøring.

Så i denne delen har vi kort sett på noen av viktige Nginx-filer og -kataloger som er nok til å komme i gang.

Sette opp serverblokker

Nå som vi har litt grunnleggende kunnskap om Nginx-filer og server, er vi klare til å sette opp vår egen serverblokk. Serverblokker ligner på virtuelle Apache-verter.

Vi skal se på hvordan du oppretter en serverblokk og for å demonstrere at vi vil bruke eksempel.com som domene i opprettelsesprosessen.

💡 Bytt ut eksempel.com med ditt domenenavn.

Før vi begynner å konfigurere serverblokker, må vi opprette en katalog som fungerer som rotkatalogen for innholdet på nettstedet. La oss skape /var/www/example.com/html katalog for domenebruk mkdir kommando.

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

De -s alternativet vil opprette alle overordnede kataloger som trengs. Det vil si at det vil skape eksempel.com en overordnet katalog til html hvis det ikke finnes.

Endre eierskap av katalogen med $USER miljøvariabel:

sudo chown -R $USER:$USER /var/www/example.com/html

Deretter lager du en enkel index.html fil som vil bli åpnet når du besøker domenet som konfigureres. Dette er kun for forklarende formål.

nano /var/www/example.com/html/index.html

Lim inn følgende innhold i filen vi nettopp opprettet på serveren.

  Velkommen til example.com! 

Yo! Eksempel.com er tilgjengelig!

trykk ctrl+o å skrive og lagre index.html fil og trykk deretter ctrl+x å gå ut nano redaktør.

Nå kan vi endelig gå videre til å lage en serverblokk, slik at Nginx kan betjene index.html når noen bruker går til eksempel.com. Så for å lage en serverblokk må vi lage en konfigurasjonsfil som heter eksempel.com i nettsteder-tilgjengelige katalog. For å gjøre det bruker vi nano og kjører:

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

Og deretter enten skriv eller kopier/lim inn følgende konfigurasjon. Trykk deretter ctrl+o og skriv inn for å skrive og lagre. Trykk på samme måte ctrl+x for å lukke nano-editoren.

server { lytt 80; hør [::]:80; servernavn example.com www.example.com; root /var/www/example-domain.com/html; indeks index.html; plassering / { try_files $uri $uri/ =404; } }

Konfigurasjonen ovenfor ligner på standard serverblokkkonfigurasjon, vi har endret rot uttalelse for å peke til vår nye rotkatalog og endret Server navn til vårt domenenavn. Mens plassering{} statement fungerer som error catch statement hvis filer ikke blir funnet og viser feil 404 til klienten.

Deretter kan vi aktivere serverblokkeringen vår slik at Nginx vil tjene eksempel.com nettsider. For å aktivere vår serverblokk må vi lage en symbolkobling av eksempel.com fil fra nettsteder-tilgjengelige til nettsteder aktivert katalog. For å gjøre det, kjør:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled

En lenke vil bli opprettet i nettstedaktivert katalog og nå eksempel.com bør være aktivert. Nå har vi to serverblokker aktivert på vår Nginx-server som vil svare på forespørsel basert på lytte og server_navn direktiver lagret i eksempel.com serverblokkkonfigurasjon.

For å sjekke om alle konfigurasjonsfilene er korrekte og ingen syntaksfeil er tilstede, kjør:

sudo nginx -t

Nå, start endelig Nginx på nytt for å bruke endringene ved å kjøre følgende kommando:

sudo systemctl start nginx på nytt

Nginx vil begynne å betjene serverblokken din nå, du kan gå til //domenenavnet ditt og se nettsiden din live.

Merk: For at delen ovenfor skal fungere, må du sette opp ditt eget domene og erstatte det eksempel.com med ditt eget domenenavn. Du må også konfigurere DNS for domenet ditt til å peke på IP-adressen til Nginx-serveren din.

For å konkludere har vi sett på hvordan du installerer Nginx, konfigurer ufw for å tillate ekstern tilgang til Nginx-serveren, koblet til Nginx eksternt, ble kjent med noen grunnleggende Nginx-filer og -kataloger og lærte hvordan man setter opp en serverblokk.

For å vite og lære mer om Nginx, kan det være lurt å se Nginx wiki.