2つの静的IPv4アドレスを持つDebian 9サーバーがあります。 1つはパブリックで、もう1つはサーバーのVPNサブネットにあります(マシンはOpenVPNサーバーを実行しています)。
VPNサブネットには、独自のTLDで内部名前解決を処理するDNSサーバーがあります。したがって、これらのIPの両方には、ドメイン名が関連付けられています(それらをpublic.domain
およびprivate.domain
と呼びましょう)。
Apache2サーバーには、ドメインごとに1つずつ、2つのVirtualHostがあります。プライベートデータを含むドキュメントルート内に、インデックスのないサブディレクトリがあります。私がやりたいのは、パブリックから呼び出されたときにこのサブディレクトリをパスワードで保護することですが、VPNアドレス経由でアクセスするときに認証を必要としません。
これは私のパブリックVirtualHost設定です:
<VirtualHost public.domain:443>
[...]
<Directory /path/to/private/directory>
AuthType Basic
AuthName "Private Data"
AuthUserFile /etc/Apache2/.htpasswd
Require valid-user
</Directory>
</VirtualHost>
そして、これは私のプライベートVirtualHost設定です:
<VirtualHost private.domain:443>
[...]
<Directory /path/to/private/directory>
AuthType None
</Directory>
</VirtualHost>
結局のところ、この構成は正しく機能していません。
public.domain
で保護されたディレクトリを呼び出すと、すべてが正常に機能し、正常に認証できます。private.domain
から呼び出すと、ログイン資格情報の入力は求められません(これはis必要なものです)が、HTTP 403 Forbidden
応答が返されます(明らかにnot私が欲しかったもの)。2つの設定ファイルの<Directory>
オプションが互いに干渉しているようです。ここで何が間違っていますか?または、これはまったく可能ですか?
事前に感謝します!
自分で解決策を見つけました。
目的のフォルダーを指す2つのシンボリックリンクを作成しました。次に、そのうちの1つをパブリックVirtualHostに使用し、もう1つをプライベートVirtualHostに使用しました。 Options FollowSymLinks
ディレクティブに<Directory>
を追加してください。