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 Sie Nginx auf Fedora 35 mit einem kostenlosen TLS/SSL-Zertifikat von Let’s Encrypt installieren und konfigurieren.
Voraussetzungen
- Empfohlenes Betriebssystem: Fedora Linux 35
- Benutzerkonto: Ein Benutzerkonto mit Sudo- oder Root-Zugriff.
Betriebssystem aktualisieren
Aktualisieren Sie Ihren Fedora Betriebssystem, um sicherzustellen, dass alle vorhandenen Pakete auf dem neuesten Stand sind:
sudo dnf upgrade --refresh -y
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@fedora ~]$ sudo whoami
root
Um ein bestehendes oder neues Sudo-Konto einzurichten, besuchen Sie unser Tutorial zum Hinzufügen eines Benutzers zu Sudoern auf Fedora .
So verwenden Sie das Root-Konto verwenden Sie den folgenden Befehl mit dem Root-Passwort, um sich anzumelden.
su
Installieren Sie Nginx Stable oder Mainline
Die Installation von Nginx ist bei Fedora-Distributionen angesichts der halbjährlichen Veröffentlichungen sehr einfach, und die ständige Aktualisierung der Pakete während ihrer Zeit bedeutet, dass Nginx größtenteils immer auf dem neuesten Stand ist.
Da Fedora daran gewöhnt ist, die aktuellsten Pakete zu haben, aktivieren Sie zuerst das Mainline-Repository, dessen Verwendung Nginx empfiehlt.
sudo dnf module enable nginx:mainline
Beispielausgabe:
Geben Sie Y ein , und drücken Sie dann die EINGABETASTE um mit der Installation fortzufahren.
Öffnen Sie als Nächstes Ihr Terminal und führen Sie den folgenden Befehl aus, um den Installationsvorgang zu starten.
sudo dnf install nginx
Beispielausgabe:
Geben Sie Y ein , und drücken Sie dann die EINGABETASTE um mit der Installation fortzufahren.
Bestätigen Sie nach der Installation die Installation, indem Sie die Nginx-Build-Version überprüfen.
nginx -v
Beispielausgabe (unter Verwendung eines Mainline-Beispiels):
nginx version: nginx/1.21.3
Standardmäßig ist der Nginx-Dienst nach der Installation nicht aktiviert oder aktiv. Um Nginx zu aktivieren, verwenden Sie den folgenden Befehl.
sudo systemctl enable nginx --now
Überprüfen Sie nun den Dienststatus, um zu bestätigen, dass Nginx fehlerfrei ausgeführt wird.
systemctl status nginx
Beispielausgabe:
Wie oben sollte der Status aktiv (wird ausgeführt) sein . An diesem Punkt haben Sie die Nginx-Anwendung installiert.
Firewall-Regeln konfigurieren
Standardmäßig fügt die Installation Firewall-Regeln nicht automatisch zum standardmäßigen Port 80 oder Port 443 hinzu bei der Installation von Nginx. 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 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 sehen.
Beispiel:
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
Weisen Sie drittens die Berechtigungen des Verzeichnisses zu, damit der Eigentümer die Dateien liest, schreibt und ausführt, 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 zunächst die für Sites erforderlichen Verzeichnisse verfügbar und sites-enabled.
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;“ .
sudo nano /etc/nginx/nginx.conf
Fügen Sie dann 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;
server_name your_domain www.your_domain;
root /var/www/your_domain/html;
index index.html index.htm;
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 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
Dieses ideale Setup umfasst erzwungene HTTPS-301-Umleitungen, einen Strict-Transport-Security-Header und OCSP-Stapling. Passen Sie einfach E-Mail und Domainnamen an Ihre Anforderungen an.
Jetzt lautet Ihre URL HTTPS://www.example.com statt HTTP://www.example.com .
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
Standardmäßig ist auf den meisten Fedora-Systemen Cron nicht installiert. Um es zu installieren, verwenden Sie den folgenden Befehl.
sudo dnf install cronie -y
Öffnen Sie die Crontab mit dem folgenden Befehl.
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 benötigen, um einen guten Zeitpunkt zum Einstellen zu finden, verwenden Sie das kostenlose Tool crontab.guru.
00 00 */1 * * /usr/sbin/certbot-auto renew
Speichern Sie nun die Datei durch Drücken von (SHIFT) und (:) Geben Sie dann (wa), ein wodurch die Datei gespeichert wird, und beenden Sie dann mit der gleichen Methode mit (qa) .
Sie sollten die folgende Ausgabe im Terminal sehen, um zu sehen, ob das Hinzufügen der neuen Aufgabe erfolgreich war.
crontab: installing new crontab
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/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.
Verwenden Sie den folgenden Befehl, um das nginx-Modul von Mainline auf die Standardeinstellungen zurückzusetzen.
sudo dnf modules reset nginx