Hallo Freunde. In diesem Beitrag werden wir mit einigen Tricks für Nginx fortfahren. Heute lernen Sie also, wie Sie den Zugriff auf Verzeichnisse und Unterverzeichnisse in Nginx einschränken. Los geht's.
Als Erstes, sollen wir das tun?
Die kurze Antwort ist JA. Definitiv. Denn in einer Anwendung oder Website gibt es viele Ordner, die vertrauliche Dateien enthalten, damit sie funktionieren.
Aus diesem Grund ist es ratsam, Regeln festzulegen, um den Zugriff auf diese Ordner zu verbieten und so die Sicherheit der Website zu verbessern.
Diese Einschränkungen können nach IP-Adresse angewendet werden, was uns die Flexibilität gibt, die von uns benötigten Konfigurationen anzuwenden.
Es ist mühelos. Los geht's.
Voraussetzungen
Bevor wir fortfahren, müssen wir sicherstellen, dass wir die Voraussetzungen erfüllen, um den Beitrag problemlos abzuschließen
- Sie müssen Nginx installiert und konfiguriert haben. Stellen Sie also sicher, dass Sie es haben, indem Sie die offiziellen Repositories Ihrer Linux-Distribution verwenden.
- Die Version von Nginx muss höher als 1.9.5 sein. Sie sollten kein Problem damit haben, da die meisten Distributionen neuere Versionen enthalten.
- Grundkenntnisse zur Nutzung des Terminals haben.
- Ein Benutzer mit Sudo-Zugriff oder Root-Zugriff.
Los geht's.
So beschränken Sie den Zugriff auf Verzeichnisse und Unterverzeichnisse in Nginx
Es ist normal, mehrere Serverblöcke auf dem Server zu haben. Wenn Sie die Konfiguration jedoch global anwenden möchten oder keine erstellt haben, müssen Sie die /etc/nginx/nginx.conf
ändern – Andernfalls müssen Sie die Konfigurationsdatei jedes Serverblocks bearbeiten. Zum Beispiel
sudo nano /etc/nginx/sites-enabled/domain.conf
Für diesen Beitrag werde ich mit einem Ordner namens data
arbeiten im Stammverzeichnis der Website. Daher wäre der relative Pfad /data
.
Die Nginx-Direktive, die die Zugriffsverweigerung durchführt, ist Deny
aber wir müssen es in einem Skript angeben, das sich auf das Verzeichnis bezieht.
Wenn Sie den Zugriff auf dieses Verzeichnis einschränken möchten, müssen Sie dies in die Konfigurationsdatei aufnehmen
location /data {
...
deny all;
...
}
Sie können den Zugriff auch auf eine bestimmte IP-Adresse beschränken. Zum Beispiel:
location /data {
...
deny 192.168.2.5;
...
}
Wenn es mehrere IP-Adressen gibt, können Sie sie so angeben
location /data {
...
deny 192.168.2.5;
deny 192.168.2.9;
...
}
Sie können auch IP-Adressbereiche verwenden
location /data {
...
Deny 192.168.1.0/24;
...
}
Speichern Sie die Änderungen und schließen Sie den Editor. Um die Änderungen zu übernehmen, starten Sie Nginx neu.
sudo systemctl restart nginx
Und Sie sind fertig.
Passwortgeschütztes Verzeichnis in Nginx
Eine weitere nützliche Option ist das Hinzufügen eines Passworts. Diese Methode ist sehr sicher und gibt Ihnen auch mehr Kontrolle darüber, wer darauf zugreifen kann.
Installieren Sie dazu die apache2-utils
Paket auf Debian, Ubuntu und Derivaten; und httpd-tools
auf RHEL, Rocky Linux und Derivaten.
Erstellen Sie dann die Datei, in der das Passwort gehostet wird, gefolgt vom Benutzer. Zum Beispiel:
sudo htpasswd -c /home/username/.htpasswd user
Wenn Sie es ausführen, werden Sie aufgefordert, ein neues Passwort für den Benutzer einzugeben.
Wir bearbeiten die Nginx- oder ServerBlocks-Konfigurationsdatei
sudo nano /etc/nginx/sites-enabled/domain.conf
Und so etwas hinzufügen
location /data {
auth_basic "Restricted";
auth_basic_user_file /home/username/.htpasswd;
}
Speichern Sie Ihre Änderungen, schließen Sie den Editor und starten Sie Nginx neu.
sudo systemctl restart nginx
Wenn Sie nun auf den Ordner zugreifen möchten, werden Sie nach einem Passwort gefragt.
Schlussfolgerung
In diesem kurzen und einfachen Beitrag haben wir etwas so Wichtiges wie das Einschränken des Zugriffs auf Ordner auf unserem Webserver erklärt.
Nginx-Dokumentation