Skip to main content
Skip table of contents

nginx: Lokales Website-Hosting

Auch wenn Sie Webseiten direkt vom Schulrouter Plus aus hosten können, wird dies aus Sicherheitsgründen nicht empfohlen - insbesondere wenn Sie Anfragen an einen lokalen PHP-Interpreter senden. Ziehen Sie NICHT in Erwägung, die Funktion zur lokalen Bereitstellung von PHP-Inhalten in Unternehmensnetzwerken zu verwenden. Sie ist für Heimanwender gedacht, die durch Stromsparen Geld sparen wollen und wissen, was sie tun. Wenn Sie nicht wissen, wie man einen Webserver richtig bedient, aktivieren Sie diese Funktion nicht.

Vorbereiten

Als erstes muss ein Verzeichnis angelegt werden. Zum Beispiel /srv/web_application1. Bitte beachten Sie, dass dieses Verzeichnis für nginx und PHP (beide laufen als www) zugänglich sein muss.

Sie können es zum Beispiel chmod (+rx für Verzeichnisse, +r für Dateien für diesen Benutzer) oder chown.

BASH
# create a directory
mkdir -p /srv/web_application1
cd /srv
stat web_application1
# Example Result:
# 86 18009 drwxr-xr-x 2 root wheel 14050 512 "Aug 31 18:28:19 2018"
#  "Aug 31 18:28:19 2018" "Aug 31 18:28:19 2018" "Aug 31 18:28:19 2018"
#  32768 8 0 web_application1
#
# as you can see, everyone can read (r) and switch into the directory (x))
#
# do this if the directory is not readable or excutable:
chmod +rx web_application1

Verwenden Sie niemals chmod 777 und seien Sie vorsichtig mit Schreibrechten. Der sicherste Weg ist, den Eigentümer auf www zu ändern (chown www filename) und Schreibrechte nur dem Webserver-Benutzer zu geben (chmod o+w filename). Das gleiche gilt für Verzeichnisse. Es wäre eine gute Idee, in diesen Verzeichnissen nichts auszuführen (zum Beispiel über einen speziellen Speicherortblock in nginx). Wenn Sie eigene Anwendungen schreiben, ist es empfehlenswert, solche Daten außerhalb des Web-Root zu speichern.

Wenn das Verzeichnis existiert, können Sie eine Datei in diesem Verzeichnis erstellen. Sagen wir, sie soll test.php heißen und einige Informationen über PHP anzeigen:

BASH
cat > /srv/web_application1/test.php
<?php phpinfo();

Drücken Sie Steuerung + d, um die Eingabe zu beenden.

Sie können auch vim verwenden, wenn Sie vim-lite über pkg installieren.

BASH
# If needed, change the permission to make it readable:
chmod +r test.php

In einem realen Szenario würden Sie wahrscheinlich ein Archiv (.tar.gz, .tar.xz, .tar.bz oder .zip) über SFTP oder SCP auf die Firewall kopieren und einen Befehl ausführen, um es zu extrahieren. Lesen Sie die Manpages für tar, das Komprimierungswerkzeug oder unzip, um genauere Anweisungen zu erhalten.

Standorte konfigurieren


Für einen Standort sind die folgenden Richtlinien wichtig:

Richtlinie

Beschreibung

Übereinstimmungstyp und URL-Muster

So passen Sie den Ort und das Muster an

Dateisystem-Wurzel

Verzeichnis von Webanwendungen

Vorgeschaltete Server

An einen entfernten Interpreter senden, anstatt den lokalen zu verwenden

Anfrage an PHP-Interpreter übergeben

Prüfen Sie, ob Sie PHP aktivieren wollen (läuft lokal als Benutzer www) oder remote

Router-Skript

Sendet alle Anfragen an ein bestimmtes Skript (Einstiegspunkt der Anwendung)

Richtlinie

Wert

Übereinstimmungstyp und URL-Muster

~* .*.php oder ähnliches

Dateisystem-Wurzel

/srv/web_application1

Vorgeschaltete Server

leer

Anfrage an PHP-Interpreter übergeben

geprüft

Router-Skript

leer

HTTP-Server konfigurieren

Das Konfigurieren des HTTP-Servers ist einfach. Sie benötigen einen Hostnamen (z. B. website.test), einen Port (8080/TCP ist der alternative HTTP-Port, also gut für Tests geeignet. Für Produktionsseiten sollten Sie bei den Standardeinstellungen bleiben). Bitte wählen Sie den zuvor erstellten Speicherort für die Bereitstellung von Webinhalten. Bitte konfigurieren Sie hier auch ein Stammverzeichnis, da alle Anfragen, die nicht übereinstimmen, vom Standardserver behandelt werden. Der Standardserver wird nur die statische Datei ausliefern.

Testen

Um zu testen, ob Ihr Webserver läuft, können Sie ihn über seine IP und seinen Port aufrufen.

Bitte beachten Sie, dass IPv6-Adressen in eckige Klammern eingeschlossen werden müssen, wie http://[::1]/ oder http://[::1]:8080/.

BASH
curl "http://192.168.0.1:8080/test.php"

Sicherheitsaspekte

  • Dies ist nginx und nicht httpd. Er kümmert sich nicht um Ihre .htaccess-Dateien. Legen Sie keine geheimen Daten in ungeschützten Verzeichnissen ab. Sie können diese Verzeichnisse selbst schützen, aber stellen Sie sicher, dass Sie sie nicht vergessen. Einige Anwendungen hängen von dieser Datei ab.

  • Verzeichnisse des Schulrouter Plus nicht überlappen und nicht als Root verwenden

  • Laden Sie keine schlecht gewartete Software hoch. Wenn Ihre Firewall kompromittiert wird, wird es leicht, auch Ihre Hosts zu kompromittieren.

  • Alle Ihre Anwendungen laufen unter demselben Benutzer (www)

  • Achten Sie auf Hinweise

  • Updates so schnell wie möglich installieren

  • Überprüfen Sie regelmäßig Ihre Protokolle.

  • Ziehen Sie in Erwägung, Ihre Verzeichnis- und Dateizugriffsrechte zu härten (z. B. Verzeichnisse und Dateien für nginx und PHP schreibgeschützt zu machen)


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.