Hur man installerar Nginx på Ubuntu 20.04 LTS

Fullständig steg-för-steg-guide för att installera och konfigurera en Nginx-webbserver på ett Ubuntu 20.04-system

Nginx är en öppen källkod och populär webbserver med omvänd proxy tillgänglig på flera plattformar. Programvaran har utvecklats av Igor Sysoev som en lösning på C10K-problemet och släpptes först 2004. C10K-problemet är problemet med att hantera tiotusen klienter samtidigt, vilket inte var lätt i början av 2000-talet.

I den här handledningen tittar vi på hur man installerar och ställer in Nginx på Ubuntu 20.04 LTS.

Förutsättningar

Ett system med Ubuntu 20.04 installerat och en sudo användare. Dessutom behöver du inte ha någon annan webbserver som Apache som körs på port 80 eller 443.

Installerar Nginx

Nginx är tillgängligt i Ubuntu 20.04 repository och benägen pakethanteraren kan användas för att installera den. Så för att installera Nginx, öppna terminalen med ctrl+alt+t och kör:

sudo apt uppdatera && sudo apt installera nginx

Installationen kommer snart att slutföras och Nginx-demonen startar automatiskt i bakgrunden. Så för att kontrollera statusen för Nginx, kör:

sudo systemctl status nginx

Efter att ha kört kommandot ovan bör du få Nginx-status som aktiv (kör) i grönt som ses nedan.

Konfigurera Ubuntu-brandväggen (UFW)

Som standard är de utgående portarna HTTP (80) och HTTPS (443) stängda på Ubuntu 20.04. Dessutom standardbrandväggsdemonen ufw är inaktiverat eftersom alla portar är stängda.

För att komma åt Nginx-servern från andra system måste du alltså aktivera ufw och ställ in den korrekt för att tillåta trafik på hamn 80 och 443. Innan du aktiverar ufw, vet att om du ställer in Nginx på en fjärrserver, uppdatera först ufw regler att tillåta ssh genom att köra:

sudo ufw tillåt ssh

Ovanstående kommando tillåter ssh åtkomst till fjärrservern, utan tillåtelse ssh du kommer att låsas ute från fjärrservern.

Efter aktivering ssh åtkomst kan du aktivera ufw brandväggsdemon genom att köra:

sudo ufw aktivera

Nu måste du ändra brandväggsreglerna för att tillåta HTTP- och HTTPS-portar så att Nginx kan betjäna webbtrafik. För att ändra reglerna, kör:

sudo ufw tillåter 'Nginx Full'

Nginx Full tillåter både HTTP- och HTTPS-portar för inkommande och utgående trafik från alla IP-adresser.

Efter det, kontrollera om reglerna är korrekt tillagda ufw brandvägg genom att köra kommandot:

sudo ufw status

Ovanstående kommando kommer att mata ut reglerna vi lagt till ufw brandväggsdemon.

Ansluter till Nginx Server

Nu när vi har installerat Nginx och konfigurerat ufw för att tillåta inkommande HTTP- och HTTPS-webbtrafik bör du kunna komma åt Nginx-servern genom att använda serverns IP-adress.

Om du inte känner till serverns IP-adress, använd kommandot nedan för att enkelt hämta den.

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

När du har fått IP-adressen, klistra in den i din webbläsare och tryck på Retur.

//din-server-ip

Om allt var korrekt konfigurerat bör du kunna se webbsidan "Välkommen till nginx!".

Nginx-filer och kataloger

Nu när vi har Nginx installerat och kört på din server. Låt oss ta en titt på några av de viktiga Nginx-filerna och katalogerna som du måste använda för att konfigurera din webbplats/webbapp.

Webserverinnehåll

Du kan konfigurera vilken plats du vill ska vara din rotkatalog för ditt serverblock. Nginx standard HTML direkt är /var/www/html, det är där "välkomstsidan" som vi besökte tidigare finns.

Andra platser som vanligtvis används som rotkatalog för domäner inkluderar:

  • /Hem//
  • /var/www/html/
  • /välja/

Nginx konfigurationsfiler

Alla Nginx-konfigurationsfiler finns i /etc/nginx katalog. Låt oss titta på några av de viktiga filer vi behöver för att skapa en grundläggande domän.

  • /etc/nginx/nginx.conf: Den här filen innehåller all konfiguration som behövs för att köra Nginx.
  • /etc/nginx/sites-available/: Den här katalogen har alla serverblockskonfigurationer för domäner, men är för närvarande inte aktiverade/distribuerade och därför inte åtkomliga för klienter.
  • /etc/nginx/sites-enabled/: Denna katalog innehåller för närvarande aktiva/aktiverade domäner som är tillgängliga för klienter. För att aktivera en domän måste vi länka domänens konfigurationsfil från webbplatser-tillgängliga till webbplatsaktiverade katalog.
  • /etc/nginx/snippets/: I den här katalogen kan vi lagra potentiellt återanvändbara konfigurationssegment. Det sparar mycket tid i produktionsmiljön på grund av att det kan göra segment/block av konfiguration återanvändbara.

Serverloggar

Nginx loggar händelserna/aktiviteterna och lagrar dem i loggfiler i /var/log/nginx katalog. Nginx loggar aktiviteter i dessa filer:

  • /var/log/nginx/access.log: Den här filen loggar klienterna som har åtkomst till Nginx-servern. Detaljer inkluderar klientens IP-adress, tid och datum, webbläsare som används för att komma åt servern och operativsystemet.
  • /var/log/nginx/error.log: Den här filen loggar de fel som påträffades av Nginx-servern när den körs.

Så i det här avsnittet har vi kort tittat på några viktiga Nginx-filer och kataloger som räcker för att komma igång.

Konfigurera serverblock

Nu när vi har lite grundläggande kunskap om Nginx-filer och server, är vi redo att sätta upp vårt eget serverblock. Serverblock liknar Apaches virtuella värdar.

Vi kommer att titta på hur man skapar ett serverblock och för att visa att vi kommer att använda exempel.com som domän i skapelseprocessen.

💡 Byt ut exempel.com med ditt domännamn.

Innan vi börjar konfigurera serverblock måste vi skapa en katalog som ska fungera som rotkatalog för webbplatsinnehåll. Låt oss skapa /var/www/example.com/html katalog för domänanvändning mkdir kommando.

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

De -s alternativet kommer att skapa alla överordnade kataloger som behövs. Det vill säga, det kommer att skapa exempel.com en överordnad katalog till html om det inte finns.

Ändra ägande av katalogen med $USER miljöfaktor:

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

Skapa sedan en enkel index.html fil som kommer att nås när du besöker domänen som konfigureras. Detta är endast i förklarande syfte.

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

Klistra in följande innehåll i filen vi just skapade på servern.

  Välkommen till example.com! 

Yo! Exempel.com är tillgänglig!

Tryck ctrl+o att skriva och spara index.html fil och tryck sedan på ctrl+x att lämna nano redaktör.

Nu kan vi äntligen gå vidare till att skapa ett serverblock, så att Nginx kan tjäna index.html när någon användare går till exempel.com. Så för att skapa ett serverblock måste vi skapa en konfigurationsfil med namnet exempel.com i webbplatser-tillgängliga katalog. För att göra det använder vi nano och kör:

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

Och sedan, antingen skriv eller kopiera/klistra in följande konfiguration. Tryck sedan på ctrl+o och skriv in för att skriva och spara. Tryck på samma sätt ctrl+x för att stänga nanoredigeraren.

server { lyssna 80; lyssna [::]:80; servernamn exempel.com www.exempel.com; root /var/www/example-domain.com/html; index index.html; plats / { try_files $uri $uri/ =404; } }

Ovanstående konfiguration liknar standardserverblockkonfigurationen, vi har ändrat rot uttalande för att peka på vår nya rotkatalog och ändrade server namn till vårt domännamn. Medan plats{} uttalande fungerar som felfångstsats om filer inte hittas och visar fel 404 för klienten.

Därefter kan vi aktivera vårt serverblock så att Nginx kommer att tjäna exempel.com webbsidor. För att aktivera vårt serverblock måste vi skapa en symbollänk av exempel.com fil från webbplatser-tillgängliga till webbplatsaktiverade katalog. För att göra det, kör:

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

En länk kommer att skapas i webbplatsaktiverad katalog och nu exempel.com bör vara aktiverad. Nu har vi två serverblock aktiverade på vår Nginx-server som kommer att svara på begäran baserat på lyssna och sever_name direktiv sparade i exempel.com konfiguration av serverblock.

För att kontrollera om alla konfigurationsfiler är korrekta och inget syntaxfel finns, kör:

sudo nginx -t

Starta nu äntligen om Nginx för att tillämpa ändringarna genom att köra följande kommando:

sudo systemctl starta om nginx

Nginx kommer att börja betjäna ditt serverblock nu, du kan gå till //ditt-domännamn och se din webbsida live.

Notera: För att avsnittet ovan ska fungera måste du skapa din egen domän och byta ut den exempel.com med ditt eget domännamn. Du måste också konfigurera DNS för din domän för att peka på IP-adressen för din Nginx-server.

Avslutningsvis har vi tittat på hur man installerar Nginx, konfigurera ufw för att tillåta fjärråtkomst till Nginx-servern, ansluten till Nginx på distans, blev bekant med några grundläggande Nginx-filer och kataloger och lärde sig hur man ställer in ett serverblock.

För att veta och lära dig mer om Nginx, kanske du vill se Nginx wiki.