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.
# 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:
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.
# 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/.
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)