80.注意事項(1) … リバースプロキシとBasic認証の併用時の注意点


リバースプロキシによって別のURLに転送されるように設定されたドキュメントディレクトリに対して、"<Directory>"ディレクティブでBasic認証の設定を記述しても、それは有効にはならない。

例えば、ドキュメントディレクトリ"/foo"へのアクセスを"http://localhost:5510/"に転送させる際にBasic認証が行われる様にする為に、以下の様に"<Directory>"ディレクティブを用いて"/foo"ディレクトリの物理フォルダパス"C:/〜/htdocs/foo"を指定してBasic認証の設定を記述したとしても、この設定は無視されてしまう。

# リバースプロクシの設定
ProxyPass /foo http://localhost:5510/
ProxyPassReverse /foo http://localhost:5510/
 
# Basic認証の設定
<Directory "C:/〜/htdocs/foo">
    AuthType Basic
    AuthUserFile "C:/〜/Conf//.htpasswd"
    AuthName "- MEMBERS ONLY -"
    Require valid-user
</Directory>

"<Directory>"ディレクティブによる設定が有効になるのは、あくまで、そのドキュメントディレクトリに対応するOSファイルシステム上での物理フォルダに対する実際のアクセスが発生する場合に限られる。

上記の設定だと、クライアントからの"https://foobar.dip.jp/foo"というURL指定によるドキュメントディレクトリ"/foo"へのアクセス要求は、リバースプロクシの設定によって直ちに別URL(http://localhost:5510/)に転送される為に、Webサーバー自身のファイルシステム上の物理フォルダ"C:/〜/htdocs/foo"への実際のアクセスは一切発生しないことになる。

よって、そのような場合に、その物理フォルダ"C:/〜/htdocs/foo"に対して、"<Directory>"ディレクティブで何らかの設定を行っても、その物理フォルダ"C:/〜/htdocs/foo"への実際の物理アクセスが発生しない為に、設定自体が無視されてしまう。

リバースプロキシが設定されたドキュメントディレクトリに対してBasic認証を動作させるには、その物理フォルダパスを"<Directory>"ディレクティブで指定するのではなく、その"URL"を"<Location>"ディレクティブを用いて指定してやり、そこに設定を記述することで動作させることができるようになる。

# Basic認証の設定
<Location "/foo">
    AuthType Basic
    AuthUserFile "C:/〜/Conf//.htpasswd"
    AuthName "- MEMBERS ONLY -"
    Require valid-user
</Location>