Fuld trin-for-trin guide til installation og opsætning af en Nginx-webserver på et Ubuntu 20.04-system
Nginx er en open source og populær omvendt proxy-webserver tilgængelig på flere platforme. Softwaren er udviklet af Igor Sysoev som en løsning på C10K-problemet og først udgivet i 2004. C10K-problemet er problemet med at håndtere 10.000 klienter samtidigt, hvilket var ganske ikke let i begyndelsen af 2000'erne.
I denne tutorial ser vi på, hvordan du installerer og konfigurerer Nginx på Ubuntu 20.04 LTS.
Forudsætninger
Et system med Ubuntu 20.04 installeret og en sudo
bruger. Derudover skal du ikke have nogen anden webserver, såsom Apache, der kører på port 80 eller 443.
Installerer Nginx
Nginx er tilgængelig i Ubuntu 20.04 repository og passende
pakkehåndtering kan bruges til at installere det. Så for at installere Nginx skal du åbne terminalen vha ctrl+alt+t
og løb:
sudo apt update && sudo apt installer nginx
Installationen er snart færdig, og Nginx-dæmonen starter automatisk i baggrunden. Så for at kontrollere status for Nginx, kør:
sudo systemctl status nginx
Efter at have kørt ovenstående kommando bør du få Nginx-status som aktiv (kører)
i grøn som vist nedenfor.
Konfiguration af Ubuntu Firewall (UFW)
Som standard er de udgående porte HTTP (80) og HTTPS (443) lukket på Ubuntu 20.04. Derudover standard firewall-dæmonen ufw
er deaktiveret, da alle porte er lukket.
For at få adgang til Nginx-serveren fra andre systemer skal du således aktivere ufw
og sæt den korrekt op for at tillade trafik på havnen 80
og 443
. Før du aktiverer ufw
, ved, at hvis du opsætter Nginx på en fjernserver, skal du først opdatere ufw
regler at tillade ssh
ved at køre:
sudo ufw tillade ssh
Ovenstående kommando tillader ssh
adgang til fjernserveren uden tilladelse ssh
du bliver låst ude af fjernserveren.
Efter aktivering ssh
adgang, kan du aktivere ufw
firewall-dæmon ved at køre:
sudo ufw aktivere
Nu skal du ændre firewall-reglerne for at tillade HTTP- og HTTPS-porte, så Nginx kan betjene webtrafik. For at ændre reglerne skal du køre:
sudo ufw tillade 'Nginx Full'
Nginx fuld
tillader både HTTP- og HTTPS-porte for indgående og udgående trafik fra alle IP-adresser.
Derefter skal du kontrollere, om reglerne er korrekt tilføjet ufw
firewall ved at køre kommandoen:
sudo ufw status
Ovenstående kommando vil udlæse de regler, vi føjede til ufw
firewall-dæmon.
Opretter forbindelse til Nginx Server
Nu hvor vi har installeret Nginx og konfigureret ufw
for at tillade indgående HTTP- og HTTPS-webtrafik, bør du være i stand til at få adgang til Nginx-serveren ved at bruge serverens IP-adresse.
Hvis du ikke kender serverens IP-adresse, skal du bruge kommandoen nedenfor for nemt at hente den.
ip-adr vis eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Når du har fået IP-adressen, skal du indsætte den i din browser og trykke på Enter.
//din-server-ip
Hvis alt var konfigureret korrekt, burde du kunne se 'Velkommen til nginx!' websiden.
Nginx filer og mapper
Nu hvor vi har Nginx installeret og kører på din server. Lad os tage et kig på nogle af de vigtige Nginx-filer og mapper, som du skal bruge til at konfigurere din hjemmeside/webapp.
Webserverindhold
Du kan konfigurere enhver placering, du ønsker, til at være din rodmappe for din serverblok. Nginxs standard HTML er direkte /var/www/html
, det er der, hvor 'velkomst'-siden, som vi besøgte tidligere, er placeret.
Andre placeringer, der normalt bruges som rodmappe til domæner, omfatter:
/hjem//
/var/www/html/
/opt/
Nginx konfigurationsfiler
Alle Nginx-konfigurationsfiler er placeret i /etc/nginx
vejviser. Lad os se på nogle af de vigtige filer, vi skal bruge for at oprette et grundlæggende domæne.
/etc/nginx/nginx.conf
: Denne fil indeholder al den konfiguration, der er nødvendig for at køre Nginx./etc/nginx/sites-available/
: Denne mappe har al serverblokkonfiguration af domæner, men er i øjeblikket ikke aktiveret/udrullet og derfor ikke tilgængelig for klienter./etc/nginx/sites-enabled/
: Denne mappe indeholder i øjeblikket aktive/aktiverede domæner, som er tilgængelige for klienter. For at aktivere et domæne skal vi linke domænekonfigurationsfilen frawebsteder-tilgængelige
tilwebsteder aktiveret
vejviser./etc/nginx/snippets
/: I denne mappe kan vi gemme potentielt genbrugelige konfigurationssegmenter. Det sparer meget tid i produktionsmiljøet på grund af det faktum, at det kan gøre segmenter/blokke af konfiguration genanvendelige.
Serverlogs
Nginx logger begivenhederne/aktiviteterne og gemmer dem i logfiler i /var/log/nginx
vejviser. Nginx logger aktiviteter i disse filer:
/var/log/nginx/access.log
: Denne fil logger de klienter, der har tilgået Nginx-serveren. Detaljer inkluderer klientens IP-adresse, tid og dato, browser, der bruges til at få adgang til serveren og OS./var/log/nginx/error.log
: Denne fil logger de fejl, som Nginx-serveren støder på, mens den kører.
Så i dette afsnit har vi kort set på nogle af vigtige Nginx-filer og mapper, der er nok til at komme i gang.
Opsætning af serverblokke
Nu hvor vi har lidt grundlæggende viden om Nginx-filer og server, er vi klar til at opsætte vores egen serverblok. Serverblokke ligner Apache virtuelle værter.
Vi vil se på, hvordan man opretter en serverblok og for at demonstrere, at vi vil bruge eksempel.com
som domæne i skabelsesprocessen.
💡 Udskift eksempel.com
med dit domænenavn.
Før vi begynder at konfigurere serverblokke, skal vi oprette en mappe, der fungerer som rodmappen for webstedsindhold. Lad os skabe /var/www/example.com/html
bibliotek til domænebrug mkdir
kommando.
sudo mkdir -p /var/www/example.com/html
Det -s
option vil oprette alle de nødvendige overordnede mapper. Det vil sige, det vil skabe eksempel.com
en overordnet mappe til html
hvis det ikke findes.
Skift ejerskab af mappen med $BRUGER
miljøvariabel:
sudo chown -R $USER:$USER /var/www/example.com/html
Dernæst skal du oprette en enkel index.html
fil, der tilgås, når du besøger domænet, der konfigureres. Dette er kun til forklarende formål.
nano /var/www/example.com/html/index.html
Indsæt følgende indhold i den fil, vi lige har oprettet på serveren.
Velkommen til example.com! Yo! Eksempel.com er tilgængelig!
Trykke ctrl+o
at skrive og gemme index.html
fil, og tryk derefter på ctrl+x
At forlade nano
redaktør.
Nu kan vi endelig gå videre til at oprette en serverblok, så Nginx kan betjene index.html
når en bruger går til eksempel.com
. Så for at oprette en serverblok skal vi lave en konfigurationsfil med navnet eksempel.com
i websteder-tilgængelige
vejviser. For at gøre det bruger vi nano og kører:
sudo nano /etc/nginx/sites-available/example.com
Og derefter enten skriv eller kopier/indsæt følgende konfiguration. Tryk derefter på ctrl+o
og indtast for at skrive og gemme. Tryk på samme måde ctrl+x
for at lukke nano-editoren.
server { lyt 80; lyt [::]:80; servernavn eksempel.com www.eksempel.dk; root /var/www/example-domain.com/html; indeks index.html; placering / { try_files $uri $uri/ =404; } }
Ovenstående konfiguration ligner standard serverblokkonfiguration, vi har ændret rod
sætning for at pege på vores nye rodmappe og ændrede server navn
til vores domænenavn. Mens Beliggenhed{}
sætningen fungerer som fejl catch-sætning, hvis filer ikke findes, og viser fejl 404 til klienten.
Dernæst kan vi aktivere vores serverblok, så Nginx vil tjene eksempel.com
web sider. For at aktivere vores serverblok skal vi oprette et symbollink af eksempel.com
fil fra websteder-tilgængelige
til websteder aktiveret
vejviser. For at gøre det skal du køre:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled
Der oprettes et link i site-aktiveret
bibliotek og nu eksempel.com
skal være aktiveret. Nu har vi to serverblokke aktiveret på vores Nginx-server, som vil svare på anmodning baseret på Lyt
og server_navn
direktiver gemt i eksempel.com
serverblokkonfiguration.
For at kontrollere, om alle konfigurationsfiler er korrekte, og der ikke er nogen syntaksfejl, skal du køre:
sudo nginx -t
Nu skal du endelig genstarte Nginx for at anvende ændringerne ved at køre følgende kommando:
sudo systemctl genstart nginx
Nginx vil begynde at betjene din serverblok nu, du kan gå til //dit-domænenavn
og se din webside live.
Bemærk: For at ovenstående sektion skal fungere, skal du oprette dit eget domæne og erstatte det eksempel.com
med dit eget domænenavn. Du skal også konfigurere DNS for dit domæne til at pege på IP-adressen på din Nginx-server.
Afslutningsvis har vi set på, hvordan man installerer Nginx, konfigurer ufw
for at tillade fjernadgang til Nginx-serveren, tilsluttet Nginx eksternt, blev bekendt med nogle grundlæggende Nginx-filer og mapper og lærte, hvordan man opsætter en serverblok.
For at vide og lære mere om Nginx, kan du se Nginx wiki.