Hoe u Nginx installeert op Debian 10

Introductie

Nginx is een gratis en open-source webserver die wordt gebruikt om websites en applicaties van alle groottes te hosten. De software staat bekend om zijn lage impact op geheugenbronnen, hoge schaalbaarheid en zijn modulaire, op gebeurtenissen gebaseerde architectuur die veilige, voorspelbare prestaties kan bieden. Meer dan alleen een webserver, werkt Nginx ook als een load balancer, een HTTP-cache en een omgekeerde proxy.

In deze handleiding installeer je Nginx op je Debian 10-server.

Vereisten

Voordat je deze handleiding start, moet je een reguliere, niet-rootgebruiker met sudo-rechten geconfigureerd hebben op je server. Je moet ook een actieve firewall hebben. Je kunt leren hoe je dit moet instellen door onze initiële serverinstallatiehandleiding voor Debian 10 te volgen.

Stap 1 – Nginx installeren

Nginx is beschikbaar in de standaardsoftwarebronnen van Debian, waardoor het mogelijk is om het te installeren via conventionele pakketbeheertools.

Eerst moet u uw lokale pakketindex bijwerken om de laatste wijzigingen van de upstream te weerspiegelen:

  1. sudo apt update

Vervolgens installeert u het nginx-pakket:

  1. sudo apt install nginx

Bevestig de installatie door Y in te voeren en druk vervolgens op Enter om door te gaan. apt zal dan Nginx en alle benodigde afhankelijkheden op uw server installeren.

Stap 2 – Firewall aanpassen

Voordat u Nginx test, is het noodzakelijk om de firewall-instellingen aan te passen om externe toegang tot de standaard webpoorten toe te staan. Als u de instructies in de voorwaarden hebt gevolgd, zou u een UFW-firewall moeten hebben geconfigureerd om de toegang tot uw server te beperken.

Tijdens de installatie registreert Nginx zichzelf bij UFW om een paar toepassingsprofielen te bieden die kunnen worden gebruikt om de toegang tot Nginx via de firewall in of uit te schakelen.

Vermeld de ufw-toepassingsprofielen door te typen:

  1. sudo ufw app list

U moet een lijst met de toepassingsprofielen krijgen:

Output
Available applications: ... Nginx Full Nginx HTTP Nginx HTTPS ...

Zoals u kunt zien, zijn er drie profielen beschikbaar voor Nginx:

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

Het wordt aanbevolen om het meest restrictieve profiel in te schakelen dat nog steeds het verkeer toestaat dat je hebt geconfigureerd. Aangezien je nog geen TLS/SSL hebt geconfigureerd voor je server in deze handleiding, hoef je alleen verkeer voor HTTP op poort 80 toe te staan.

Dit kun je inschakelen door het volgende in te typen:

  1. sudo ufw allow 'Nginx HTTP'

Je kunt de wijziging verifiëren door het volgende in te typen:

  1. sudo ufw status

Wat verschijnt zijn de toegestane HTTP-verkeer in de uitvoer:

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 uw webserver

Aan het einde van het installatieproces start Debian 10 Nginx. De webserver zou al moeten draaien.

Je kunt 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 Tue 2022-06-28 18:42:58 UTC; 49s ago Docs: man:nginx(8) Main PID: 2729 (nginx) Tasks: 2 (limit: 1167) Memory: 7.2M CGroup: /system.slice/nginx.service ├─2729 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2730 nginx: worker process

Deze uitvoer onthult dat de service succesvol is gestart. De beste manier om dit echter te testen, is eigenlijk een pagina van Nginx aan te vragen.

Je kunt de standaard Nginx-startpagina 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 kent, kun je dit typen bij de opdrachtprompt van je server:

  1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Je krijgt een paar regels terug. Je kunt elk ervan proberen in je webbrowser om te zien of ze werken.

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

http://your_server_ip

De standaard Nginx-landingspagina moet verschijnen in uw webbrowser:

Deze pagina is inbegrepen bij Nginx om u te laten zien dat de server correct draait.

Stap 4 – Beheren van het Nginx-proces

Nu u uw webserver hebt opgestart en draaiende, kunt u enkele basisbeheercommando’s bekijken.

Om uw 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 u 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 opstart. Als dit niet is wat u wilt, kunt u dit gedrag uitschakelen door te typen:

  1. sudo systemctl disable nginx

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

  1. sudo systemctl enable nginx

Stap 5 – Instellen van Server Blocks (Optioneel)

Wanneer u de Nginx-webserver gebruikt, kunnen serverblokken (vergelijkbaar met virtuele hosts in Apache) worden gebruikt om configuratiegegevens te encapsuleren en meer dan één domein op één server te hosten. Vervang in de volgende opdrachten uw_domein door uw eigen domeinnaam. Voor meer informatie over het instellen van een domeinnaam met DigitalOcean, zie onze introductie tot DigitalOcean DNS.

Nginx op Debian 10 heeft standaard één serverblok ingeschakeld dat is geconfigureerd om documenten te serveren uit een directory op /var/www/html. Hoewel dit goed werkt voor één site, kan het onhandelbaar worden als u meerdere sites host. In plaats van /var/www/html te wijzigen, maakt u een directorystructuur binnen /var/www aan voor de website uw_domein, waarbij /var/www/html op zijn plaats blijft als de standaarddirectory die wordt geserveerd als een clientaanvraag niet overeenkomt met andere sites.

Maak de directory voor uw_domein als volgt aan, met de -p-vlag om eventuele benodigde bovenliggende directories te maken:

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

Wijs vervolgens eigendom van de directory toe met de omgevingsvariabele $USER, die moet verwijzen naar uw huidige systeemgebruiker:

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

De rechten van uw webroot zouden correct moeten zijn als u uw umask-waarde niet hebt gewijzigd, maar u kunt dit controleren door te typen:

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

Maak vervolgens een voorbeeldpagina index.html aan met behulp van nano of uw voorkeurteksteditor:

  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! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
    </body>
</html>

Sla het bestand op en sluit het af wanneer je klaar bent. In nano kun je dit doen door op CTRL + X te drukken, vervolgens op Y, en dan op ENTER.

Om Nginx deze inhoud te laten serveren, moet je een serverblok maken met de juiste richtlijnen die verwijzen naar je aangepaste webroot. In plaats van de standaard configuratiebestand rechtstreeks aan te passen, maak je een nieuw bestand aan op /etc/nginx/sites-available/jouw_domein:

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

Voeg het volgende configuratieblok toe, dat vergelijkbaar is met de standaard, maar bijgewerkt voor je nieuwe directory 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;
        }
}

Let op de bijgewerkte root configuratie naar je nieuwe directory en de server_name naar je domeinnaam. Vergeet niet om jouw_domein te vervangen door je daadwerkelijke domeinnaam.

Vervolgens activeer je dit serverblok door een symbolische link te maken naar je aangepaste configuratiebestand binnen de sites-enabled directory, waar Nginx tijdens het opstarten uit leest:

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

Je server heeft nu twee geactiveerde serverblokken en geconfigureerd om te reageren op verzoeken op basis van hun listen en server_name richtlijnen (je kunt meer lezen over hoe Nginx deze richtlijnen verwerkt hier):

  • jouw_domein: Zal reageren op verzoeken voor jouw_domein en www.jouw_domein.
  • standaard: Zal reageren op alle verzoeken op poort 80 die niet overeenkomen met de andere twee blokken.

Om een mogelijk geheugenprobleem met hash-emmers te voorkomen dat kan ontstaan door het toevoegen van extra servernamen aan uw configuratie, 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

Vind de directive server_names_hash_bucket_size en verwijder het #-symbool om de regel uit te commentariëren:

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

Sla het bestand op en sluit het wanneer u klaar bent.

Vervolgens test u om er zeker van te zijn dat er geen syntaxfouten zijn in een van uw Nginx-bestanden:

  1. sudo nginx -t

Als er geen problemen zijn, is dit de uitvoer:

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Zodra uw configuratietest slaagt, herstart u Nginx om uw wijzigingen toe te passen:

  1. sudo systemctl restart nginx

Nginx zou nu uw domeinnaam moeten bedienen. U kunt dit testen door naar http://uw_domein te navigeren. De aangepaste HTML die u heeft gemaakt in de map /var/www/uw_domein/html/index.html moet hier worden weergegeven:

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

Nu u weet hoe u de Nginx-service zelf kunt beheren, kunt u wat tijd nemen om vertrouwd te raken met een paar belangrijke mappen en bestanden.

Inhoud

  • /var/www/html: De daadwerkelijke webinhoud, die standaard alleen bestaat uit de standaard Nginx-pagina die je eerder hebt gezien, wordt geserveerd vanuit de map /var/www/html. 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 aangepast om wijzigingen aan te brengen in de wereldwijde 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 map sites-enabled. Meestal wordt alle serverblokconfiguratie in deze map gedaan en vervolgens ingeschakeld door te koppelen naar de andere map.
  • /etc/nginx/sites-enabled/: De map waar ingeschakelde per-site serverblokken worden opgeslagen. Deze worden meestal gemaakt door te koppelen naar configuratiebestanden die in de map sites-available zijn gevonden.
  • /etc/nginx/snippets: Deze map bevat configuratiefragmenten die elders in de Nginx-configuratie kunnen worden opgenomen. Potentieel herhaalbare configuratiesegmenten zijn goede kandidaten voor refactoring in snippets.

Server Logs

  • /var/log/nginx/access.log: Elke aanvraag naar uw webserver wordt vastgelegd in dit logbestand, tenzij Nginx anders is geconfigureerd.
  • /var/log/nginx/error.log: Eventuele Nginx-fouten worden vastgelegd in dit logboek.

Conclusie

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

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-10