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 franettsteder-tilgjengelige
tilnettsteder 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.