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:
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:
Je zou een lijst met de toepassingsprofielen moeten krijgen:
OutputAvailable 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:
Je kunt de wijziging controleren door het volgende te typen:
De output zal aangeven welk HTTP-verkeer is toegestaan:
OutputStatus: 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:
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:
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:
Om de webserver te starten wanneer deze gestopt is, typ:
Om de service te stoppen en vervolgens opnieuw te starten, typ:
Als je alleen configuratiewijzigingen aanbrengt, kan Nginx vaak herladen zonder verbindingen te verbreken. Om dit te doen, typ:
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:
Om de service opnieuw in te schakelen om bij het opstarten te starten, kunt u het volgende typen:
U hebt nu basisbeheeropdrachten geleerd en zou klaar moeten zijn om de site te configureren om meer dan één domein te hosten.
Stap 5 – Het instellen van Server Blocks (Aanbevolen)
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:
Vervolgens, wijs eigendom van de map toe met de $USER
omgevingsvariabele:
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:
Vervolgens, maak een voorbeeldpagina index.html
met behulp van nano
of uw favoriete editor:
Voeg binnenin de volgende voorbeeld-HTML toe:
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
:
Plak het volgende configuratieblok in, dat lijkt op de standaard, maar is bijgewerkt voor onze nieuwe map en domeinnaam:
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:
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 vooruw_domein
enwww.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:
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.
...
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:
Als er geen problemen zijn, herstart je Nginx om je wijzigingen in te schakelen:
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 desites-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 desites-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