it-swarm.com.de

Individuelle Verzeichnisoptionen für jeden VirtualHost in Apache2

Ich habe einen Debian 9-Server mit zwei statischen IPv4-Adressen. Einer von ihnen ist öffentlich und der andere befindet sich im VPN-Subnetz des Servers (auf dem Computer wird ein OpenVPN-Server ausgeführt).

Im VPN-Subnetz befindet sich ein DNS-Server, der die interne Namensauflösung mit einer eigenen TLD übernimmt. Beiden IPs ist also ein Domänenname zugeordnet (nennen wir sie public.domain und private.domain).

Mein Apache2-Server verfügt über zwei VirtualHosts, einen für jede Domain. Es gibt ein nicht indiziertes Unterverzeichnis im Dokumentenstamm, das private Daten enthält. Ich möchte dieses Unterverzeichnis durch ein Passwort schützen, wenn es von der Öffentlichkeit aufgerufen wird, aber keine Authentifizierung erfordern, wenn über die VPN-Adresse zugegriffen wird.

Dies ist meine öffentliche VirtualHost-Konfiguration:

<VirtualHost public.domain:443>

    [...]

    <Directory /path/to/private/directory>
        AuthType Basic
        AuthName "Private Data"
        AuthUserFile /etc/Apache2/.htpasswd
        Require valid-user
    </Directory>

</VirtualHost>

Und das ist meine private VirtualHost-Konfiguration:

<VirtualHost private.domain:443>

    [...]

    <Directory /path/to/private/directory>
        AuthType None
    </Directory>

</VirtualHost>

Wie sich herausstellt, funktioniert diese Konfiguration nicht richtig:

  • Wenn ich das geschützte Verzeichnis über public.domain aufrufe, funktioniert alles noch einwandfrei und ich kann mich normal authentifizieren.
  • Wenn ich es von private.domain aus aufrufe, werde ich nicht nach Anmeldeinformationen gefragt (was ist , was ich wollte), sondern erhalte ein HTTP 403 Forbidden Antwort (Was offensichtlich nicht das ist, was ich wollte).

Es scheint, als ob die <Directory> -Optionen in den beiden Konfigurationsdateien sich gegenseitig stören. Was mache ich hier falsch? Oder ist das überhaupt möglich?

Vielen Dank im Voraus!

2
Sandtler

Ich habe gerade selbst eine Lösung gefunden.

Ich habe zwei Symlinks erstellt, die beide auf den gewünschten Ordner verweisen. Dann habe ich einen für den öffentlichen und einen für den privaten VirtualHost verwendet. Funktioniert einwandfrei. Fügen Sie Options FollowSymLinks in die Anweisungen <Directory> ein.

1
Sandtler