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:
public.domain
, tout fonctionne toujours correctement et je peux m'authentifier normalement.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!
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>
.