Einführung
Nginx ist einer der beliebtesten Webserver der Welt und bekannt für seine häufige Verwendung als Load Balancer und Reverse Proxy. Es ist ressourcenschonender als Apache und viele der größten und am häufigsten frequentierten Websites im Internet hängen von Nginx ab, um ihre Inhalte bereitzustellen.
In diesem Handbuch wird gezeigt, wie Nginx auf einem FreeBSD 11.2-Server installiert wird.
Voraussetzungen
Bevor Sie mit dieser Anleitung beginnen, benötigen Sie Zugriff auf einen Server, auf dem FreeBSD ausgeführt wird. Dieses Handbuch wurde speziell für einen Server mit FreeBSD 11.2 geschrieben, obwohl es auch auf älteren, unterstützten Versionen des Betriebssystems funktionieren sollte.
Wenn Sie neu in der Arbeit mit FreeBSD sind, kann es hilfreich sein, diesen Server anzupassen, indem Sie diese Anweisungen befolgen. .
Wenn Sie vorhaben, einen Domänennamen für diesen Server einzurichten, benötigen Sie außerdem Folgendes:
-
Ein registrierter Domainname, den Sie besitzen und kontrollieren. Wenn Sie noch keinen registrierten Domainnamen haben, können Sie einen bei einem der vielen Domainnamen-Registrare registrieren (z. Namecheap, GoDaddy usw.).
-
Ein DNS * A Record *, der Ihre Domain auf die öffentliche IP-Adresse Ihres Servers verweist. Weitere Informationen zum Hinzufügen von Hostnamen finden Sie unter this hostname tutorial.
Schritt 1 - Nginx installieren
Zunächst installieren wir Nginx mit + pkg +
, dem in FreeBSD integrierten Binärpaket-Management-Tool. Der folgende Befehl aktualisiert Ihre lokale Kopie der verfügbaren Pakete und installiert dann das Paket + nginx +
:
sudo pkg install nginx
Wenn Sie + pkg +
zum ersten Mal ausführen, werden Sie aufgefordert, zu bestätigen, dass Sie zulassen, dass es sich selbst booten kann. Drücken Sie dazu + y +
und dann + ENTER +
. Wenn Sie dazu aufgefordert werden, bestätigen Sie, dass Sie die Installation des Pakets "+ nginx " genehmigen, indem Sie " y " und dann " ENTER +" erneut drücken.
Wenn Sie die Shell + csh +
oder + tcsh +
verwenden, müssen Sie den Befehl + rehash +
ausführen. Dies macht die Shell auf die neuen Anwendungen aufmerksam, die Sie installiert haben:
rehash
Nginx ist jetzt auf Ihrem Server installiert, läuft aber noch nicht. Im nächsten Schritt ermöglichen wir Nginx, bei jedem Start des Servers ausgeführt zu werden und ihn für diese Sitzung zu starten. Außerdem führen wir den Sicherungsprozess des Servers durch, indem wir eine Firewall mit IPFW einrichten.
Schritt 2 - Aktivieren des Nginx-Dienstes und Einrichten einer Firewall mit IPFW
Damit FreeBSD Nginx als herkömmlichen Dienst starten kann, müssen Sie FreeBSD mitteilen, dass Sie es aktivieren möchten. Auf diese Weise können Sie es wie jeden anderen Dienst anstatt als eigenständige Anwendung verwalten und FreeBSD so konfigurieren, dass es beim Booten automatisch gestartet wird.
Dazu müssen Sie zuerst den richtigen Parameter "+ rc " kennen, der für den Dienst " nginx " festgelegt werden soll. ` rc ` ist ein FreeBSD-Dienstprogramm, das die automatischen Boot-Prozesse des Systems steuert. Skripte für jeden auf dem System verfügbaren Dienst befinden sich im Verzeichnis " / usr / local / etc / rc.d ". Diese definieren die Parameter, die verwendet werden, um jeden Dienst mit der Variablen " rcvar " zu aktivieren. Wir können sehen, auf was das ` rcvar +` jedes Dienstes eingestellt ist, indem wir Folgendes eingeben:
grep rcvar /usr/local/etc/rc.d/*
Nach der Installation gibt dieser Befehl eine Liste aus, die der folgenden ähnelt:
Output/usr/local/etc/rc.d/cloudconfig:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/cloudfinal:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/cloudinit:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/cloudinitlocal:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/nginx:rcvar=
/usr/local/etc/rc.d/rsyncd:rcvar=rsyncd_enable
Der Parameter, den Sie für den Dienst "+ nginx +" festlegen müssen, wird hier in dieser Ausgabe hervorgehoben. Der Name des Skripts selbst - die letzte Komponente des Pfads vor dem Doppelpunkt - ist ebenfalls hilfreich, da FreeBSD diesen Namen verwendet, um auf den Dienst zu verweisen.
Um den "+ nginx " - Dienst zu aktivieren, müssen Sie seine " rcvar " zur " rc.conf " - Datei hinzufügen, die die globalen Systemkonfigurationsinformationen enthält, auf die von den Startskripten verwiesen wird. Verwenden Sie Ihren bevorzugten Editor, um die Datei " / etc / rc.conf " mit den Rechten " sudo " zu öffnen. Hier verwenden wir " ee +":
sudo ee /etc/rc.conf
Am Anfang der Datei befinden sich bereits einige + rcvar +
- Parameter. Fügen Sie den Parameter + nginx_enable +
+ rcvar +
darunter ein und setzen Sie ihn auf " YES "
:
/etc/rc.conf
. . .
sshd_enable="YES"
. . .
Während wir uns noch in der Datei "+ rc.conf +" befinden, werden wir ein paar weitere Anweisungen hinzufügen, um eine IPFW-Firewall zu aktivieren und zu konfigurieren. IPFW ist eine Stateful-Firewall für FreeBSD. Es bietet eine leistungsstarke Syntax, mit der Sie Sicherheitsregeln für die meisten Anwendungsfälle anpassen können.
Fügen Sie direkt unter dem soeben hinzugefügten Parameter "+ nginx_enable +" die folgenden hervorgehobenen Zeilen hinzu:
/etc/rc.conf
. . .
nginx_enable="YES"
Die einzelnen Anweisungen und ihre Einstellungen haben folgende Funktionen:
-
+ firewall_enable =" YES "+
- Wenn Sie diese Anweisung auf" YES "
setzen, wird die Firewall beim Starten des Servers gestartet. -
+ firewall_type =" workstation "+
- FreeBSD bietet verschiedene Standardtypen von Firewalls mit jeweils leicht unterschiedlichen Konfigurationen. Wenn Sie den Typ "+ Workstation +" deklarieren, schützt die Firewall diesen Server nur mit Stateful-Regeln. -
+ firewall_myservices =" 22 / tcp 80 / tcp "+
- In der Anweisung+ firewall_myservices +
können Sie die TCP-Ports auflisten, die Sie durch die Firewall zulassen möchten. In diesem Beispiel geben wir die Ports "+ 22 " und " 80 +" an, um SSH- bzw. HTTP-Zugriff auf den Server zu ermöglichen. -
+ firewall_allowservices =" any "+
- Damit kann ein Computer von einer beliebigen IP-Adresse über die in der Anweisung+ firewall_myservices +
angegebenen Ports kommunizieren.
Speichern Sie nach dem Hinzufügen dieser Zeilen die Datei und schließen Sie den Editor, indem Sie die Tastenkombination STRG + C + drücken, "+ exit " eingeben und dann " ENTER +" drücken.
Starten Sie dann den Firewall-Dienst "+ ipfw ". Da Sie die Firewall auf diesem Server zum ersten Mal starten, kann dies dazu führen, dass der Server blockiert und über SSH nicht mehr erreichbar ist. Mit dem folgenden Befehl " nohup +", der für "no hangups" steht, wird die Firewall gestartet, wobei ein Abwürgen verhindert wird. Außerdem werden die Standardausgabe und der Fehler in eine temporäre Protokolldatei umgeleitet:
sudo nohup service ipfw start >/tmp/ipfw.log 2>&1
Wenn Sie jedoch die Shells "+ csh " oder " tcsh " verwenden, führt diese Umleitung dazu, dass " Ambiguous Output Redirect. " In Ihrer Ausgabe angezeigt wird. Wenn Sie eine dieser Shells verwenden, führen Sie stattdessen Folgendes aus, um " ipfw +" zu starten:
sudo nohup service ipfw start >&/tmp/ipfw.log
Starten Sie als nächstes den Dienst "+ nginx"
sudo service nginx start
Um zu testen, ob Nginx Inhalte korrekt bereitstellen kann, geben Sie die öffentliche IP-Adresse Ihres Servers in die URL-Leiste Ihres bevorzugten Webbrowsers ein:
http://
Wenn alles korrekt funktioniert, wird die Standard-Nginx-Landingpage angezeigt:
image: https: //assets.digitalocean.com/freebsd/nginx/nginx_default_page.png [Nginx-Standardseite]
Dies zeigt, dass Nginx installiert ist und ordnungsgemäß ausgeführt wird und wie erwartet die Firewall passieren kann. Es sind jedoch noch einige Konfigurationsänderungen erforderlich, damit nicht standardmäßige Einstellungen verwendet oder Inhalte unter Verwendung eines Domänennamens bereitgestellt werden können.
Schritt 3 - Einrichten eines Serverblocks
Bei Verwendung des Nginx-Webservers können server blocks (ähnlich wie bei virtuellen Hosts in Apache) verwendet werden, um Konfigurationsdetails zu kapseln und mehr als eine Domäne von einem einzelnen Server aus zu hosten. Wir werden eine Domain mit dem Namen * example.com * einrichten, aber Sie sollten * diese durch Ihren eigenen Domainnamen ersetzen *. Weitere Informationen zum Einrichten eines Domainnamens mit DigitalOcean finden Sie unter Introduction to DigitalOcean DNS.
In Nginx unter FreeBSD 11.2 ist standardmäßig ein Serverblock aktiviert, der so konfiguriert ist, dass Dokumente aus einem Verzeichnis unter + / usr / local / www / nginx +
bereitgestellt werden. Dies funktioniert zwar gut für eine einzelne Site, kann jedoch unhandlich werden, wenn Sie mehrere Sites hosten. Anstatt "+ / usr / local / www / nginx " zu ändern, erstellen wir eine Verzeichnisstruktur in " / usr / local / www +" für unsere * example.com * -Site.
Erstellen Sie das Verzeichnis für * example.com * wie folgt, indem Sie das Flag "+ -p +" verwenden, um alle erforderlichen übergeordneten Verzeichnisse zu erstellen:
sudo mkdir -p /usr/local/www//html
Weisen Sie als Nächstes dem Benutzer * www *, dem standardmäßigen Nginx-Laufzeitbenutzerprofil, den Besitz des Verzeichnisses zu:
sudo chown -R www:www /usr/local/www/
Die Berechtigungen Ihres Webstamms sollten korrekt sein, wenn Sie Ihren "+ umask +" - Wert nicht geändert haben. Sie können dies jedoch sicherstellen, indem Sie Folgendes eingeben:
sudo chmod -R 755 /usr/local/www/
Als nächstes erstellen Sie eine Beispielseite "+ index.html" mit "+ ee +":
sudo ee /usr/local/www//html/index.html
Fügen Sie im Inneren den folgenden Beispiel-HTML-Code hinzu:
/usr/local/www/example.com/html/index.html
<html>
<head>
<title>Welcome to !</title>
</head>
<body>
<h1>Success! The server block is working!</h1>
</body>
</html>
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Damit Nginx diesen Inhalt bereitstellen kann, muss ein Serverblock mit den richtigen Anweisungen erstellt werden. Öffnen Sie die Hauptkonfigurationsdatei von Nginx. Standardmäßig befindet sich dies im Verzeichnis + / usr / local / etc / nginx / +
:
sudo ee /usr/local/etc/nginx/nginx.conf
Wenn Sie die Datei zum ersten Mal öffnen, wird ganz oben Folgendes angezeigt:
/usr/local/etc/nginx/nginx.conf
#user nobody;
worker_processes 1;
. . .
Entfernen Sie das Kommentarzeichen "+ user ", indem Sie das Nummernzeichen (" # ") entfernen, und ändern Sie den Benutzer von "nobody" in "www". Aktualisieren Sie anschließend die Direktive " worker_processes ", mit der Sie auswählen können, wie viele Worker-Prozesse Nginx verwenden soll. Der optimale Wert für die Eingabe ist nicht immer offensichtlich oder leicht zu finden. Wenn Sie " auto +" festlegen, setzt Nginx den Wert auf einen Worker pro CPU-Kern, was in den meisten Fällen ausreicht:
/usr/local/etc/nginx/nginx.conf
user ;
worker_processes ;
. . .
Scrolle dann runter zum + server +
Block. Wenn alle Kommentare entfernt sind, sieht es folgendermaßen aus:
/usr/local/etc/nginx/nginx.conf
. . .
server {
listen 80;
server_name localhost;
location / {
root /usr/local/www/nginx;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
}
Löschen Sie diesen gesamten Serverblock, einschließlich aller auskommentierten Zeilen, und ersetzen Sie ihn durch den folgenden Inhalt:
/usr/local/etc/nginx/nginx.conf
. . .
server {
access_log /var/log/nginx/.access.log;
error_log /var/log/nginx/.error.log;
listen 80;
server_name www.;
location / {
root /usr/local/www//html;
index index.html index.htm;
}
}
. . .
Die Anweisungen in diesem Serverblock bewirken Folgendes:
-
+ access_log +
: Diese Anweisung definiert den Speicherort der Zugriffsprotokolle des Servers. -
+ error_log +
: Dies definiert die Datei, in die Nginx seine Fehlerprotokolle schreibt. -
+ listen +
: Die Anweisung+ listen +
legt fest, auf welchem Port Nginx empfangsbereit sein soll. In diesem Fall setzen wir es auf den Port "+ 80 +", damit es auf HTTP-Verkehr lauschen kann. -
+ Servername +
: Zeigen Sie hier mit Nginx auf Ihren Domainnamen und alle Aliase, die Sie dafür haben. Wenn Sie keinen Domainnamen haben, verweisen Sie Nginx auf die öffentliche IP-Adresse Ihres Servers. -
+ root +
: Definiert das Website-Dokument-Stammverzeichnis, das Sie zuvor in diesem Schritt erstellt haben. -
+ index +
: Diese Direktive definiert die Dateien, die als Index verwendet werden und in welcher Reihenfolge sie überprüft werden sollen.
Wenn alle Kommentare entfernt sind, sieht die Datei folgendermaßen aus:
/usr/local/letc/nginx/nginx.conf
user www;
worker_processes ;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
access_log /var/log/nginx/.access.log;
error_log /var/log/nginx/.error.log;
listen 80;
server_name www.;
location / {
root /usr/local/www/;
index index.html index.htm;
}
}
}
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Testen Sie dann Ihre Konfigurationsdatei auf Syntaxfehler, indem Sie Folgendes eingeben:
sudo nginx -t
Wenn Ihre Konfigurationsdatei keine feststellbaren Syntaxfehler aufweist, wird die folgende Ausgabe angezeigt:
Outputnginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Wenn der obige Befehl mit Fehlern zurückgegeben wird, öffnen Sie die Nginx-Konfigurationsdatei erneut an dem Ort, an dem der Fehler gefunden wurde, und versuchen Sie, das Problem zu beheben.
Wenn Ihre Konfiguration korrekt ausgecheckt wurde, laden Sie den Dienst "+ nginx +" erneut, um Ihre Änderungen zu aktivieren:
sudo service nginx reload
Nginx sollte nun den Inhalt bereitstellen, den Sie in der Datei "+ index.html " eingerichtet haben. Testen Sie dies, indem Sie zu " http: // +" navigieren, wo Sie ungefähr Folgendes sehen sollten:
image: https://assets.digitalocean.com/articles/nginx_server_block_1404/first_block.png [Nginx erster Serverblock]
Als letzten Schritt gehen wir einige Befehle durch, mit denen Sie den Nginx-Dienst verwalten können.
Schritt 4 - Verwalten des Nginx-Prozesses
Nachdem Sie Ihren Webserver in Betrieb genommen haben, sehen wir uns einige grundlegende Verwaltungsbefehle an.
Geben Sie Folgendes ein, um Ihren Webserver zu stoppen:
sudo service nginx stop
Geben Sie Folgendes ein, um den Webserver nach dem Stoppen zu starten:
sudo service nginx start
Geben Sie Folgendes ein, um den Dienst zu beenden und erneut zu starten:
sudo service nginx restart
Wenn Sie lediglich Konfigurationsänderungen vornehmen, können Sie Nginx neu laden, ohne dass Verbindungen unterbrochen werden müssen. Geben Sie dazu Folgendes ein:
sudo service nginx reload
Denken Sie zuletzt daran, wie wir in Schritt 2 den Dienst "+ nginx " aktiviert haben, indem wir der Datei " rc.conf " die Direktive " nginx_enable =" YES "" hinzugefügt haben. Wenn Sie den " nginx +" - Dienst deaktivieren möchten, um zu verhindern, dass er beim Starten des Servers gestartet wird, müssen Sie diese Datei erneut öffnen und diese Zeile entfernen.
Fazit
Sie haben jetzt einen voll funktionsfähigen Nginx-Webserver auf Ihrem Computer installiert. Von hier aus können Sie den Webdatenverkehr Ihres Servers verschlüsseln, indem Sie HTTPS aktivieren. Informationen dazu finden Sie unter So sichern Sie Nginx mit Let’s Encrypt unter FreeBSD. Sie können auch installieren und MySQL und konfigurieren PHP, mit dem Sie zusammen mit Nginx einen vollständigen FEMP-Stack erhalten.