web-dev-qa-db-ja.com

Apache2のすべてのVirtualHostの個別のディレクトリオプション

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
Sandtler

自分で解決策を見つけました。

目的のフォルダーを指す2つのシンボリックリンクを作成しました。次に、そのうちの1つをパブリックVirtualHostに使用し、もう1つをプライベートVirtualHostに使用しました。 Options FollowSymLinksディレクティブに<Directory>を追加してください。

1
Sandtler