NGINX ist eine kostenlose Open-Source-HTTP-Server-Software. Zusätzlich zu seinen HTTP-Serverfunktionen kann NGINX auch als Proxy-Server für E-Mail (IMAP, POP3 und SMTP) und als Reverse-Proxy und Load Balancer für HTTP-, TCP- und UDP-Server fungieren. Das Ziel hinter NGINX war es, den schnellsten Webserver zu schaffen, und die Aufrechterhaltung dieser Exzellenz ist nach wie vor ein zentrales Ziel des Nginx-Projekts. NGINX schlägt Apache und andere Server in Benchmarks, die die Leistung von Webservern messen, und ist laut W3Tech jetzt der am häufigsten verwendete Webserver.
Im Tutorial erfahren Sie, wie SieNginx auf AlmaLinux 8 mit einem kostenlosen TLS/SSL-Zertifikat von Let’s Encrypt installieren.
Voraussetzungen
- Empfohlenes Betriebssystem: AlmaLinux 8.
- Benutzerkonto: Ein Benutzerkonto mit sudo-Privilegien oder Root-Zugriff (su-Befehl) .
Betriebssystem aktualisieren
Aktualisieren Sie Ihr AlmaLinux Betriebssystem, um sicherzustellen, dass alle vorhandenen Pakete auf dem neuesten Stand sind:
sudo dnf upgrade --refresh
Das Tutorial verwendet den sudo-Befehl und vorausgesetzt, Sie haben den Sudo-Status .
So überprüfen Sie den Sudo-Status Ihres Kontos:
sudo whoami
Beispielausgabe, die den Sudo-Status zeigt:
[joshua@localhost ~]$ sudo whoami
root
Um ein bestehendes oder neues Sudo-Konto einzurichten, besuchen Sie unser Tutorial zum So fügen Sie einen Benutzer zu Sudoern auf AlmaLinux hinzu .
So verwenden Sie das Root-Konto verwenden Sie den folgenden Befehl mit dem Root-Passwort, um sich anzumelden.
su
Installieren Sie Nginx
Methode 1. Installieren Sie Nginx von AlmaLinux AppStream
Die erste Methode besteht darin, Nginx aus dem AlmaLinux-App-Stream zu installieren. Diese Version ist älter, aber stabil und sicher. Wenn Sie einen primären Webserver oder Reverse-Proxy ausführen müssen, wird häufig die Installation des App Stream-Repositorys empfohlen.
Führen Sie den folgenden Befehl aus, um Nginx zu installieren.
sudo dnf install nginx
Beispielausgabe:
Geben Sie "Y" ein , und drücken Sie dann die "ENTER-TASTE" um mit der Installation fortzufahren.
Überprüfen Sie als Nächstes den Versionsaufbau und ob die Installation erfolgreich war.
sudo nginx -v
Beispielausgabe:
nginx version: nginx/1.14.1
Beachten Sie, dass Ihre Ausgaben je nach aktiviertem Modul unterschiedlich sind.
Bevor Sie fortfahren, müssen Sie den Nginx-Dienst starten.
sudo systemctl start nginx
Überprüfen Sie als Nächstes den Status, um sicherzustellen, dass keine Fehler vorliegen.
systemctl status nginx
Beispielausgabe, wenn alles korrekt funktioniert:
Methode 2. Nginx von EPEL installieren
Die zweite Option besteht darin, Nginx aus dem EPEL-Repository zu installieren. Dadurch erhalten Sie eine viel aktuellere Version von Nginx, die immer noch als stabil gilt, als wenn Sie die veralteten neuesten Versionen von Nginx selbst installieren. Der Vorgang ist relativ einfach.
Installieren Sie zuerst das EPEL-Repository:
sudo dnf install epel-release
Beispielausgabe:
Geben Sie „J“ ein Drücken Sie dann die "ENTER-TASTE" um mit der Installation fortzufahren.
Jetzt mit dem EPEL installiert haben, müssen Sie die Nginx-Module zurücksetzen.
sudo dnf module reset nginx
Listen Sie als Nächstes die verfügbaren Module auf, die mit dnf aus allen bekannten Repositories verfügbar sind.
sudo dnf module list nginx
Beispielausgabe:
Wie oben können Sie entweder zu einer höheren Version von Stable oder Mainline wechseln. Beachten Sie, dass die stabile Version immer die Build-Nummer hat und die Hauptlinie natürlich Hauptlinie ist.
Um eines der neuen Module von EPEL zu aktivieren, verwenden Sie Folgendes in Ihrem Terminal.
Neuestes Stable aktivieren:
sudo dnf module enable nginx:1.20
Hinweis für stabiles Nginx EPEL: Dies kann sich in Zukunft ändern. Achten Sie darauf, die Module aufzulisten und nicht nur zu kopieren und einzufügen.
Neueste Hauptleitung aktivieren:
sudo dnf module enable nginx:mainline
Installieren Sie jetzt Nginx:
sudo dnf install nginx
Beispielausgabe:
Geben Sie "Y" ein Drücken Sie dann die "ENTER-TASTE" um mit der Installation fortzufahren.
Überprüfen Sie als Nächstes den Versionsaufbau und ob die Installation erfolgreich war.
sudo nginx -v
Beispielausgabe (Mainline):
nginx version: nginx/1.19.10
Beachten Sie, dass Ihre Ausgaben je nach aktiviertem Modul unterschiedlich sind.
Bevor Sie fortfahren, müssen Sie den Nginx-Dienst starten.
sudo systemctl enable nginx --now
Überprüfen Sie als Nächstes den Status, um sicherzustellen, dass keine Fehler vorliegen.
systemctl status nginx
Beispielausgabe, wenn alles korrekt funktioniert:
Firewall-Regeln konfigurieren
Es fügt bei der Installation von Nginx nicht automatisch Firewall-Regeln zu den Standardports 80 oder 443 hinzu. Bevor Sie fortfahren, sollten Sie die folgenden Regeln festlegen, dies hängt davon ab, welche Ports Sie verwenden werden, aber alle Optionen sind aufgelistet.
Port 80 oder HTTP öffnen:
sudo firewall-cmd --permanent --zone=public --add-service=http
Port 443 oder HTTPS öffnen:
sudo firewall-cmd --permanent --zone=public --add-service=https
Firewall neu laden, damit die Änderungen wirksam werden
sudo firewall-cmd --reload
Nginx-Server konfigurieren
Sie müssen die IP-Adresse des Servers für die Einrichtung bereithalten. Der einfachste Weg, dies zu tun, ist wie folgt.
Server-IP-Adresse finden
Sie müssen die IP-Adresse des Servers für die Einrichtung vorbereiten. Der einfachste Weg, dies zu tun, ist wie folgt.
curl -4 icanhazip.com
Beispielausgabe:
XXX.XXX.XXX.XXX IP address
Wenn die Befehle nicht funktionieren, haben Sie höchstwahrscheinlich das Curl-Paket nicht installiert. Führen Sie den folgenden Befehl aus:
sudo dnf install curl -y
Sobald Sie die IP-Adresse Ihres Servers haben, öffnen Sie Ihren bevorzugten Internetbrowser und prüfen Sie, ob die Standard-Zielseite funktioniert.
http://your_server_ip
Sie sollten die folgende Seite in Ihrem Internetbrowser erhalten. Wenn Sie diese Seite nicht erhalten, sondern stattdessen eine Nginx-Fehlerseite, ist das in Ordnung, da die EPEL-Version abweichen kann. Sie testen, um sicherzustellen, dass Sie den Nginx-Server erreichen können.
Site-Quellverzeichnis einrichten
In der Anleitung richten Sie eine Domain namens example.com ein , aber Sie sollten dies durch Ihren Domainnamen ersetzen . Das Tutorial erstellt die Webverzeichnisse und konfiguriert die Site-Dateien im übergeordneten Verzeichnis /var/www/ .
Erstellen Sie zuerst das Verzeichnis für example.com , wie folgt, mit dem "-p" Flag, um alle erforderlichen übergeordneten Verzeichnisse zu erstellen:
sudo mkdir -p /var/www/your_domain/html
Zweitens müssen Sie den Eigentümer des Verzeichnisses zuweisen.
sudo chown -R $USER:$USER /var/www/your_domain/html
Drittens weisen Sie die Berechtigungen des Verzeichnisses zu, sodass der Eigentümer die Dateien lesen, schreiben und ausführen kann, während er Gruppen und anderen nur Lese- und Ausführungsberechtigungen gewährt. Sie können den folgenden Befehl eingeben:
sudo chmod -R 755 /var/www/your_domain
Alternativ können Sie /usr/share/nginx/html verwenden stattdessen das Verzeichnis /var/www Verzeichnismethode wird neuen Benutzern empfohlen.
Test-HTML-Seite einrichten
Erstellen Sie viertens eine Testseite, mit der Sie bestätigen, dass Ihr Nginx-Server betriebsbereit ist.
nano /var/www/your_domain/html/index.html
Innerhalb des Nano-Editors und der neuen Datei, die Sie erstellt haben. Geben Sie Folgendes ein.
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>
Speichern Sie die Datei (STRG+O), Beenden Sie dann (STRG+X) .
Nginx-Serverblock erstellen
Standardmäßig wird der Nginx-Serverblock, ähnlich wie Apache Virtual Hosts, in der /etc/nginx/conf.d behandelt Verzeichnis. Die Nginx-Installation unterscheidet sich jedoch von verschiedenen Versionen und Distributionen, die entweder die conf.d verwenden oder Websites verfügbar/Websites aktiviert standardmäßig. Für das Tutorial werden die Verzeichnisse der Site verwendet, um einen Standard einzuhalten.
Machen Sie zuerst die für Websites verfügbaren Verzeichnisse erforderlich und für Websites aktiviert . Nginx-Benutzer wären auch mit diesem Setup vertraut.
sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled
Öffnen Sie als Nächstes Ihre nginx.conf-Datei und entfernen oder kommentieren Sie die „include /etc/nginx/default.d/*.conf;“ und fügen Sie direkt darunter include „/etc/nginx/sites-enabled/*.conf;“ hinzu .
Nur Beispiel:
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
###EDIT HERE###
# include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;
}
Wie oben ein “#” Kommentar wurde zu include conf.d hinzugefügt line und sites-enabled einschließen wurde hinzugefügt.
Speichern Sie die Datei (STRG+O) und beenden (STRG+X) .
Erstellen Sie als Nächstes Ihre Serverblock-Konfigurationsdatei. Der Name your_domain.conf wird für das Tutorial verwendet, kann aber beliebig benannt werden.
sudo nano /etc/nginx/sites-available/your_domain.conf
Sie können den folgenden Beispielcode in den Block einfügen. Dies ist nur ein nur-HTTP-Beispiel für grundlegende Tests.
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
Das Beispiel zeigt, dass Ihr Server auf zwei Servernamen wartet, "Ihre_Domäne" auf Port 80.
Sie müssen das Stammverzeichnis in den Namen/Speicherort des von Ihnen erstellten Stammverzeichnisses ändern.
Aktivierter Nginx-Serverblock
Sie müssen die Konfigurationsdateien von „sites-available“ zu „sites-enabled“ in Ihrem Nginx-Verzeichnis verknüpfen, um Nginx-Serverblöcke zu aktivieren. Dies kann mit dem Befehl ln -s wie folgt erfolgen.
sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/
Endgültige Konfiguration &Testlauf
Im letzten Schritt müssen Sie Ihre standardmäßige nginx.conf öffnen Datei.
sudo nano /etc/nginx/nginx.conf
Und kommentieren Sie die folgende Zeile aus.
server_names_hash_bucket_size 64;
Die Hash-Bucket-Größe des Servernamens wird geändert, da manchmal Probleme beim Hinzufügen zusätzlicher Server auftreten.
Testen Sie als Nächstes Ihr Nginx, um sicherzustellen, dass es funktioniert, bevor Sie es ordnungsgemäß neu starten.
sudo nginx -t
Die Ausgabe sollte lauten, wenn keine Fehler in der Syntax:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Wenn Sie die folgende ok-Ausgabe haben, starten Sie den Nginx-Server neu, damit die Änderungen stattfinden.
sudo systemctl restart nginx
Öffnen Sie nun Ihren Internetbrowser und geben Sie den Domänennamen des Servers ein. Sie sollten sehen, dass Ihr Serverblock aktiv ist.
Nginx mit Let’s Encrypt SSL Free Certificate sichern
Idealerweise möchten Sie Ihr Nginx auf HTTPS mit einem SSL-Zertifikat ausführen . Verwenden Sie dazu am besten Let’s Encrypt eine kostenlose, automatisierte und offene Zertifizierungsstelle, die von der gemeinnützigen Internet Security Research Group (ISRG) betrieben wird .
Installieren Sie zuerst das EPEL -Repository und das mod_ssl Paket für besser aktualisierte Pakete und Sicherheit.
sudo dnf install epel-release mod_ssl -y
Installieren Sie als Nächstes das certbot-Paket wie folgt:
sudo dnf install python3-certbot-nginx -y
Führen Sie nach der Installation den folgenden Befehl aus, um die Erstellung Ihres Zertifikats zu starten:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com
Dies ist das ideale Setup, das erzwungene HTTPS-301-Umleitungen, Strict-Transport-Security-Header und OCSP-Stapling umfasst. Passen Sie einfach E-Mail und Domainnamen an Ihre Anforderungen an.
Jetzt lautet Ihre URL HTTPS://www.example.com statt HTTP://www.example.com .
Beachten Sie, wenn Sie die alte HTTP-URL verwenden , wird automatisch auf HTTPS umgeleitet .
Optional können Sie einen Cronjob einrichten, um die Zertifikate automatisch zu erneuern. Certbot bietet ein Skript an, das dies automatisch durchführt, und Sie können zuerst testen, ob alles funktioniert, indem Sie einen Probelauf durchführen.
sudo certbot renew --dry-run
Wenn alles funktioniert, öffnen Sie Ihr Crontab-Fenster mit dem folgenden Terminalbefehl.
sudo crontab -e
Geben Sie als Nächstes die Zeit an, zu der es automatisch verlängert werden soll. Dies sollte mindestens täglich überprüft werden, und wenn das Zertifikat erneuert werden muss, aktualisiert das Skript das Zertifikat nicht. Wenn Sie Hilfe dabei benötigen, einen guten Zeitpunkt zum Einstellen zu finden, verwenden Sie das kostenlose Tool crontab.guru.
00 00 */1 * * /usr/sbin/certbot-auto renew
Speichern (STRG+O) Beenden Sie dann (STRG+X), und der Cronjob wird automatisch aktiviert.
Verwalten des Nginx-Dienstes
Nachdem Sie Nginx erfolgreich auf Ihrem Server ausgeführt haben, lauten einige Management-Keynotes wie folgt.
So stoppen Sie den Nginx-Webserver:
sudo systemctl stop nginx
So starten Sie den Nginx-Webserver:
sudo systemctl start nginx
So starten Sie den Nginx-Webserver neu:
sudo systemctl restart nginx
So laden Sie den Nginx-Webserver neu (Für kleinere Änderungen, die keinen Neustart erfordern) :
sudo systemctl reload nginx
So deaktivieren Sie Nginx beim Serverstart:
sudo systemctl disable nginx
So starten Sie Nginx beim Serverstart (wird bei der Installation automatisch aktiviert) :
sudo systemctl enable nginx
Zugriff auf Nginx-Serverprotokolle
Nginx-Protokollverzeichnis
Standardmäßig befinden sich alle NGINX-Zugriffs-/Fehlerprotokolle, sofern Sie sie nicht geändert haben, im Protokollverzeichnis, das der folgende Befehl anzeigen kann.
Navigieren Sie zuerst zum Protokollverzeichnis und listen Sie die Dateien auf:
cd /var/log/nginx && ls -l
Sie sollten die folgenden Zugriffs- und Fehlerdateien finden:
Zugriffsprotokoll:
/var/log/nginx/access.log
Fehlerprotokoll:
/var/log/nginx/error.log
Um Protokolle in Echtzeit in Ihrem Terminal anzuzeigen, verwenden Sie den Befehl sudo tail -f /location/of/log path.
Beispiel:
sudo tail -f /var/log/nginx/access.log
Eine andere Option besteht darin, die letzten X Zeilen zu drucken. Beispielsweise wird X durch 30 ersetzt, um 30 Zeilen zu drucken, indem das Flag -n 30 hinzugefügt wird .
sudo tail -f /var/log/nginx/access.log -n 30
Dies sind nur einige Beispiele für das Lesen von Protokollen, und grep kann ebenfalls hilfreich sein.
So konfigurieren Sie Nginx Log Rotate
Nginx installiert automatisch die Protokollrotation und konfiguriert sie auf die Standardeinstellung, die täglich rotieren soll. Sie können diese Einstellungen ändern, indem Sie wie unten gezeigt auf die Datei zugreifen.
sudo nano /etc/nginx/logrotate.d/nginx
Als nächstes sehen Sie die gleiche, wenn nicht ähnliche Dateistruktur. Hier können Sie den Inhalt ändern. Meistens können Sie ändern, wie viele Protokolle aufbewahrt werden sollen, oder von täglich auf wöchentlich wechseln. Dies sollte standardmäßig beibehalten werden, es sei denn, Sie haben spezielle Protokollanforderungen für Software wie fail2ban-Überwachung oder ähnliches.
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
Die wichtigsten Einstellungen, die Sie wahrscheinlich ändern möchten, sind die folgenden:
- Täglich – Dies kann in Wöchentlich, Monatlich geändert werden. Dies sollte täglich eingehalten werden, da sonst das Durchsuchen der Protokolldatei schwierig wird.
- Um 14 drehen – So viele Protokolle müssen aufbewahrt und entfernt werden, also gibt es maximal 14 Protokolle, wenn Sie nur Protokolle im Wert von 7 Tagen aufbewahren möchten, ändern Sie dies auf 7.
Es wird empfohlen, keine anderen Einstellungen zu ändern, es sei denn, Sie wissen, was Sie tun.
So aktualisieren Sie Nginx
Nginx wird standardmäßig aktualisiert, wenn eine neue Version in die Repositories gelangt. Vor dem Upgrade ist es immer ratsam, Ihr Nginx-Verzeichnis oder zumindest die nginx.conf zu sichern Datei. Sie können beides mit dem folgenden Befehl tun.
Nginx.conf sichern (dringend empfohlen):
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf
Sichern Sie Ihren gesamten Nginx-Ordner, wenn Sie möchten:
sudo cp /etc/nginx/ /etc/nginx-bkup
Führen Sie als Nächstes den Standard-Update-Befehl aus.
sudo dnf upgrade --refresh
Wenn ein Upgrade verfügbar ist, führen Sie das Upgrade aus.
Möglicherweise werden Sie während eines Upgrades oder einer Installation dazu aufgefordert, aber dies vorher manuell zu tun, ist ziemlich wichtig. Bei großen Nginx-Konfigurationen mit mehreren Sites wäre eine Sicherung auf etwas wie Github oder Gitlab sogar noch vorteilhafter.
So entfernen (deinstallieren) Sie Nginx
Um Nginx zu entfernen, wenn Sie es nicht mehr verwenden, können Sie dies mit dem folgenden Befehl tun:
sudo dnf autoremove nginx
Dieser Befehl entfernt auch alle ungenutzten Abhängigkeiten, die mit der Installation geliefert wurden.
Denken Sie daran, wenn Sie Nginx mit EPEL installieren und es zurücksetzen möchten, um die Originalversion neu zu installieren, verwenden Sie den folgenden Befehl wie zuvor erwähnt.
sudo dnf modules reset nginx