Hoe Nginx te Installeren op Ubuntu 22.04

Introductie

Nginx is een van de meest populaire webservers ter wereld en is verantwoordelijk voor het hosten van enkele van de grootste en meest bezochte sites op het internet. Het is een lichte keuze die kan worden gebruikt als zowel een webserver als een omgekeerde proxy.

In deze handleiding zullen we bespreken hoe u Nginx kunt installeren op uw Ubuntu 22.04-server, de firewall kunt aanpassen, het Nginx-proces kunt beheren en serverblokken kunt instellen voor het hosten van meer dan één domein vanaf een enkele server.

Implementeer uw applicaties vanuit GitHub met behulp van DigitalOcean App Platform. Laat DigitalOcean zich richten op het schalen van uw app.

Vereisten

Voordat u deze handleiding start, moet u een reguliere, niet-root gebruiker met sudo-rechten geconfigureerd hebben op uw server. U kunt leren hoe u een reguliere gebruikersaccount configureert door onze Initiële serverinstellingengids voor Ubuntu 22.04 te volgen.

U wilt optioneel ook een domeinnaam hebben geregistreerd voordat u de laatste stappen van deze handleiding voltooit. Voor meer informatie over het instellen van een domeinnaam met DigitalOcean, kunt u verwijzen naar onze Introductie tot DigitalOcean DNS.

Wanneer u een account beschikbaar hebt, logt u in als uw niet-rootgebruiker om te beginnen.

Stap 1 – Nginx installeren

Omdat Nginx beschikbaar is in de standaard repositories van Ubuntu, is het mogelijk om het vanuit deze repositories te installeren met behulp van het apt-verpakkingssysteem.

Aangezien dit onze eerste interactie is met het apt-verpakkingssysteem in deze sessie, zullen we onze lokale pakketindex bijwerken zodat we toegang hebben tot de meest recente pakketlijsten. Daarna kunnen we nginx installeren:

  1. sudo apt update
  2. sudo apt install nginx

Druk op Y wanneer u wordt gevraagd om de installatie te bevestigen. Als u wordt gevraagd om eventuele services te herstarten, drukt u op ENTER om de standaardinstellingen te accepteren en door te gaan. apt zal Nginx en eventuele vereiste afhankelijkheden op uw server installeren.

Stap 2 – De firewall aanpassen

Voor het testen van Nginx moet de firewallsoftware geconfigureerd worden om toegang tot de service toe te staan. Nginx registreert zichzelf als een service bij ufw bij installatie, waardoor het eenvoudig is om Nginx-toegang toe te staan.

Vermeld de toepassingsconfiguraties waar ufw mee kan werken door het volgende te typen:

  1. sudo ufw app list

Je zou een lijst met de toepassingsprofielen moeten krijgen:

Output
Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

Zoals gedemonstreerd door de output, zijn er drie profielen beschikbaar voor Nginx:

  • Nginx Full: Dit profiel opent zowel poort 80 (normaal, niet-versleuteld webverkeer) als poort 443 (TLS/SSL-versleuteld verkeer)
  • Nginx HTTP: Dit profiel opent alleen poort 80 (normaal, niet-versleuteld webverkeer)
  • Nginx HTTPS: Dit profiel opent alleen poort 443 (TLS/SSL-versleuteld verkeer)

Het wordt aanbevolen om het meest restrictieve profiel in te schakelen dat nog steeds het verkeer toestaat dat je geconfigureerd hebt. Op dit moment hoeven we alleen verkeer op poort 80 toe te staan.

Dit kun je inschakelen door het volgende te typen:

  1. sudo ufw allow 'Nginx HTTP'

Je kunt de wijziging controleren door het volgende te typen:

  1. sudo ufw status

De output zal aangeven welk HTTP-verkeer is toegestaan:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

Stap 3 – Controleer je webserver

Aan het einde van het installatieproces start Ubuntu 22.04 Nginx. De webserver zou al actief moeten zijn.

We kunnen controleren met het systemd init-systeem om ervoor te zorgen dat de service draait door het volgende in te typen:

  1. systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022-03-01 16:08:19 UTC; 3 days ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) Memory: 3.5M CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process

Zoals bevestigd door deze uitvoer, is de service succesvol gestart. De beste manier om dit te testen is echter door daadwerkelijk een pagina van Nginx op te vragen.

Je kunt de standaard Nginx-landingspagina openen om te bevestigen dat de software correct werkt door naar het IP-adres van je server te navigeren. Als je het IP-adres van je server niet weet, kun je het vinden door de icanhazip.com-tool te gebruiken, die je je openbare IP-adres geeft zoals ontvangen vanaf een andere locatie op het internet:

  1. curl -4 icanhazip.com

Wanneer je het IP-adres van je server hebt, voer je het in de adresbalk van je browser in:

http://your_server_ip

Je zou de standaard Nginx-landingspagina moeten ontvangen:

Als je op deze pagina bent, draait je server correct en is klaar om beheerd te worden.

Stap 4 – Beheer van het Nginx-proces

Nu je webserver actief is, laten we enkele basisbeheeropdrachten doornemen.

Om je webserver te stoppen, typ:

  1. sudo systemctl stop nginx

Om de webserver te starten wanneer deze gestopt is, typ:

  1. sudo systemctl start nginx

Om de service te stoppen en vervolgens opnieuw te starten, typ:

  1. sudo systemctl restart nginx

Als je alleen configuratiewijzigingen aanbrengt, kan Nginx vaak herladen zonder verbindingen te verbreken. Om dit te doen, typ:

  1. sudo systemctl reload nginx

Standaard is Nginx geconfigureerd om automatisch te starten wanneer de server wordt opgestart. Als dit niet is wat u wilt, kunt u dit gedrag uitschakelen door het volgende in te typen:

  1. sudo systemctl disable nginx

Om de service opnieuw in te schakelen om bij het opstarten te starten, kunt u het volgende typen:

  1. sudo systemctl enable nginx

U hebt nu basisbeheeropdrachten geleerd en zou klaar moeten zijn om de site te configureren om meer dan één domein te hosten.

Bij het gebruik van de Nginx-webserver kunnen serverblokken (vergelijkbaar met virtuele hosts in Apache) worden gebruikt om configuratiegegevens te encapsuleren en meer dan één domein vanaf een enkele server te hosten. We zullen een domein genaamd your_domain instellen, maar u moet dit vervangen door uw eigen domeinnaam.

Nginx op Ubuntu 22.04 heeft standaard één serverblok ingeschakeld dat is geconfigureerd om documenten te serveren vanuit een directory op /var/www/html. Hoewel dit goed werkt voor een enkele site, kan het onhandig worden als u meerdere sites host. In plaats van /var/www/html aan te passen, laten we een directorystructuur maken binnen /var/www voor onze your_domain-site, waarbij /var/www/html op zijn plaats blijft als de standaarddirectory die wordt geserveerd als een clientverzoek niet overeenkomt met andere sites.

Maak de directory voor your_domain als volgt aan, gebruikmakend van de -p-vlag om eventueel benodigde bovenliggende directories te maken:

  1. sudo mkdir -p /var/www/your_domain/html

Vervolgens, wijs eigendom van de map toe met de $USER omgevingsvariabele:

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

De rechten van uw webroots moeten juist zijn als u uw umask waarde niet heeft gewijzigd, die standaardbestandsrechten instelt. Om ervoor te zorgen dat uw rechten juist zijn en de eigenaar in staat stellen om bestanden te lezen, schrijven en uit te voeren, terwijl alleen lees- en uitvoerrechten aan groepen en anderen worden verleend, kunt u de volgende opdracht invoeren:

  1. sudo chmod -R 755 /var/www/your_domain

Vervolgens, maak een voorbeeldpagina index.html met behulp van nano of uw favoriete editor:

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

Voeg binnenin de volgende voorbeeld-HTML toe:

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

Sla het bestand op en sluit het af door op Ctrl+X te drukken om af te sluiten, druk vervolgens op Y wanneer gevraagd wordt om op te slaan, en dan Enter.

Om Nginx in staat te stellen deze inhoud te serveren, is het noodzakelijk om een serverblok te maken met de juiste directives. In plaats van de standaardconfiguratiebestand rechtstreeks aan te passen, laten we er een nieuw maken in /etc/nginx/sites-available/uw_domein:

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

Plak het volgende configuratieblok in, dat lijkt op de standaard, maar is bijgewerkt voor onze nieuwe map en domeinnaam:

/etc/nginx/sites-available/your_domain
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;
        }
}

Merk op dat we de root configuratie hebben bijgewerkt naar onze nieuwe map en de server_name naar onze domeinnaam.

Vervolgens, laten we het bestand inschakelen door een link vanuit het naar de sites-enabled map te maken, die Nginx tijdens het opstarten leest:

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

Opmerking: Nginx gebruikt een veelvoorkomende praktijk genaamd symbolische koppelingen, of symlinks, om bij te houden welke van uw serverblokken zijn ingeschakeld. Het maken van een symlink is als het maken van een snelkoppeling op schijf, zodat u later de snelkoppeling uit de sites-enabled-directory kunt verwijderen terwijl u het serverblok in sites-available wilt behouden als u het wilt inschakelen.

Er zijn nu twee serverblokken ingeschakeld en geconfigureerd om te reageren op verzoeken op basis van hun listen– en server_name-instructies (u kunt meer lezen over hoe Nginx deze instructies verwerkt hier):

  • uw_domein: Zal reageren op verzoeken voor uw_domein en www.uw_domein.
  • standaard: Zal reageren op elk verzoek op poort 80 dat niet overeenkomt met de andere twee blokken.

Om een mogelijk geheugenprobleem met hash-buckets te voorkomen dat kan ontstaan door het toevoegen van extra servernamen, is het nodig om een enkele waarde aan te passen in het bestand /etc/nginx/nginx.conf. Open het bestand:

  1. sudo nano /etc/nginx/nginx.conf

Zoek de instructie server_names_hash_bucket_size en verwijder het #-symbool om de regel uit te commentariëren. Als u nano gebruikt, kunt u snel woorden in het bestand vinden door op CTRL en w te drukken.

Opmerking: Het uitcommentariëren van regels code – meestal door # aan het begin van een regel te plaatsen – is een andere manier om ze uit te schakelen zonder ze daadwerkelijk te hoeven verwijderen. Veel configuratiebestanden worden geleverd met meerdere opties die zijn uitgecommentarieerd, zodat ze kunnen worden ingeschakeld of uitgeschakeld door ze tussen actieve code en documentatie te schakelen.

/etc/nginx/nginx.conf
...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

Sla het bestand op en sluit het af wanneer je klaar bent.

Vervolgens test je om er zeker van te zijn dat er geen syntaxisfouten zijn in een van je Nginx-bestanden:

  1. sudo nginx -t

Als er geen problemen zijn, herstart je Nginx om je wijzigingen in te schakelen:

  1. sudo systemctl restart nginx

Nginx zou nu je domeinnaam moeten bedienen. Je kunt dit testen door naar http://je_domein te navigeren, waar je iets soortgelijks zou moeten zien:

Stap 6 – Vertrouwd raken met Belangrijke Nginx-bestanden en Directories

Nu je weet hoe je de Nginx-service zelf beheert, moet je een paar minuten nemen om je vertrouwd te maken met een paar belangrijke directories en bestanden.

Inhoud

  • /var/www/html: De daadwerkelijke webinhoud, die standaard alleen bestaat uit de standaard Nginx-pagina die je eerder zag, wordt geserveerd vanuit de /var/www/html-map. Dit kan worden gewijzigd door Nginx-configuratiebestanden aan te passen.

Serverconfiguratie

  • /etc/nginx: De Nginx-configuratiemap. Alle Nginx-configuratiebestanden bevinden zich hier.
  • /etc/nginx/nginx.conf: Het hoofd-Nginx-configuratiebestand. Dit kan worden gewijzigd om wijzigingen aan te brengen in de globale Nginx-configuratie.
  • /etc/nginx/sites-available/: De map waar per-site serverblokken kunnen worden opgeslagen. Nginx zal de configuratiebestanden in deze map niet gebruiken, tenzij ze zijn gekoppeld aan de sites-enabled-map. Typisch wordt alle serverblokconfiguratie in deze map gedaan, waarna ze worden ingeschakeld door te koppelen naar de andere map.
  • /etc/nginx/sites-enabled/: De map waar ingeschakelde per-site serverblokken worden opgeslagen. Typisch worden deze gemaakt door te koppelen naar configuratiebestanden die worden gevonden in de sites-available-map.
  • /etc/nginx/snippets: Deze map bevat configuratiefragmenten die elders in de Nginx-configuratie kunnen worden opgenomen. Potentieel herhaalbare configuratiesegmenten zijn goede kandidaten voor refactoring naar snippets.

Server Logs

  • /var/log/nginx/access.log: Elke aanvraag aan uw webserver wordt geregistreerd in dit logbestand, tenzij Nginx is geconfigureerd om dit niet te doen.
  • /var/log/nginx/error.log: Eventuele Nginx-fouten worden geregistreerd in dit logbestand.

Conclusie

Nu u uw webserver hebt geïnstalleerd, heeft u veel opties voor het type inhoud dat u wilt serveren en de technologieën die u wilt gebruiken om een rijkere ervaring te creëren.

Als u een meer complete applicatiestack wilt opzetten, bekijk dan het artikel Hoe Linux, Nginx, MySQL, PHP (LEMP-stack) te installeren op Ubuntu 22.04.

Om HTTPS in te stellen voor uw domeinnaam met een gratis SSL-certificaat via Let’s Encrypt, kunt u doorgaan naar Hoe Nginx te beveiligen met Let’s Encrypt op Ubuntu 22.04.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-22-04