Ausgabe
Ich habe auf meinem Raspberry Pi eine Nextcloud installiert. Ich möchte es in meinem lokalen Netzwerk für die Dateiübertragung und überall für Kontakte und den Kalender verwenden.
Meine nextcloud befindet sich unter /var/www/html/nextcloud
. Ich habe auch eine Datei erstellt /etc/apache2/sites-available/nextcloud.conf
, um den virtuellen Host zu aktivieren. Grundsätzlich:
<VirtualHost *:80>
DocumentRoot /var/www/html/nextcloud/
ServerName nextcloud.example.com
<Directory /var/www/html/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
SetEnv HOME /var/www/html/nextcloud
SetEnv HTTP_HOME /var/www/html/nextcloud
</VirtualHost>
Die nextcloud ist unter folgenden Links erreichbar:
192.168.2.100/nextcloud
nextcloud.example.com
example.com/nextcloud
Meine Frage: Gibt es eine Möglichkeit den Zugriff via zu verbieten example.com/nextcloud
?
deny, allow
Ich habe versucht, Einträge in hinzuzufügen /var/www/html/nextcloud/.htaccess
. Aber entweder blockiere ich zu viel, oder es funktioniert nicht. Hilfe wird geschätzt.
Lösung
Die Tatsache, dass example.com/nextcloud
überhaupt zugänglich ist, liegt daran, dass Sie die Subdomain auf ein Unterverzeichnis außerhalb des Dokumentenstammverzeichnisses der Hauptdomain verweisen (wie im VirtualHost der Hauptdomain definiert). Wenn die Unterdomäne eine völlig separate Entität ist, dann wäre es vorzuziehen, dass sie auf einen Bereich außerhalb des Dokumentenstamms der Hauptdomäne zeigt.
Ich habe versucht, deny Einträge hinzuzufügen, erlauben Sie Einträge in
/var/www/html/nextcloud/.htaccess
Wenn Sie dies blockieren möchten .htaccess
(im Gegensatz zur vHost-Konfiguration der Hauptdomäne), müssen Sie den angeforderten Host
Header überprüfen. Und dabei hätte ich gedacht, dass es vorzuziehen wäre, etwas anderes als den kanonischen Hostnamen zu blockieren, dh. alles andere nextcloud.example.com
(also blockiert es auch Anfragen über die IP-Adresse). Anstatt nach den Hostnamen zu suchen, die Sie blockieren möchten. Sie können dies zum Beispiel mit mod_rewrite tun:
# /var/www/html/nextcloud/.htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} !^nextcloud\.example\.com$
RewriteRule ^ - [F]
Das obige antwortet mit einem “403 Forbidden” für jede Anfrage, bei der der angeforderte Host
Header nicht (wie durch das !
Präfix angegeben) ist nextcloud.example.com
.
Sie können dieses Unterverzeichnis auch im vHost-Container der Hauptdomäne blockieren (nicht in der Subdomäne). Es gilt also nur für Anfragen an example.com
. Zum Beispiel:
<Directory /var/www/html/nextcloud>
Require all denied
</Directory>
Beachten Sie, dass Order
, Allow
und Deny
Apache 2.2-Direktiven sind und früher auf Apache 2.4 veraltet waren. Sie sollten Require
(mod_authz_core) auf Apache 2.4 verwenden.
Beantwortet von – MrWhite
Antwort geprüft von – Cary Denson (FixError Admin)