web-dev-qa-db-fra.com

Options de répertoire individuelles pour chaque hôte virtuel dans Apache2

J'ai un serveur Debian 9 avec deux adresses IPv4 statiques. L'un d'eux est public et l'autre se trouve dans le sous-réseau VPN du serveur (la machine exécute un serveur OpenVPN).

Il existe un serveur DNS dans le sous-réseau VPN qui gère la résolution de nom interne avec un propre TLD. Donc, ces deux IP ont un nom de domaine qui leur est associé (appelons-les public.domain et private.domain).

Mon serveur Apache2 a deux hôtes virtuels, un pour chaque domaine. Il existe un sous-répertoire non indexé dans la racine du document qui contient des données privées. Ce que je veux faire, c'est protéger ce sous-répertoire par un mot de passe lorsqu'il est appelé du public, mais aucune authentification n'est nécessaire lors d'un accès via l'adresse VPN.

Voici ma configuration publique VirtualHost:

<VirtualHost public.domain:443>

    [...]

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

</VirtualHost>

Et voici ma configuration privée VirtualHost:

<VirtualHost private.domain:443>

    [...]

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

</VirtualHost>

Il se trouve que cette configuration ne fonctionne pas correctement:

  • Lorsque j'appelle le répertoire protégé sur public.domain, tout fonctionne toujours correctement et je peux m'authentifier normalement.
  • Lorsque je l’appelle depuis private.domain, on ne me demande pas d’identifiants de connexion (qui est ce que je voulais), mais une réponse HTTP 403 Forbidden (qui est évidemment pas ce que je voulais).

Il semble que les options <Directory> dans les deux fichiers de configuration interfèrent. Qu'est-ce que je fais mal ici? Ou est-ce possible?

Merci d'avance!

2
Sandtler

Je viens de trouver une solution par moi-même.

J'ai créé deux liens symboliques, les deux pointant vers le dossier souhaité. Ensuite, j'ai utilisé l'un d'eux pour le public VirtualHost et l'autre pour le privé. Fonctionne parfaitement bien, assurez-vous d’ajouter Options FollowSymLinks dans les directives <Directory>.

1
Sandtler