.
WEB/DB 関連 => Apache2初期導入時の管理・設定例 > 2.Alias と ScriptAliasについて
Linux 活用ガイド:目次

サーバ構築ガイド

レンタル ガイド

ショップ 構築ガイド

情報漏洩対策

Alias と ScriptAlias について

Alias と ScriptAlias の概念はApacheディレクティブ設定の基本を理解する上で非常に重要です。セキュリティにも関係します。ここではホームページ制作や開発環境下での サーバー構築を例に、Alias と ScriptAlias について解説しています。

ドキュメントルート外での公開とCGI実行

ドキュメントルート外でのCGI実行を実現するには、現実的ではないバーチャルホスト、シンボリックを除いて、二通りの方法があります。 ScriptAlias を使う方法と [ Alias / ディレクティブ ] + [ ディレクティブオプション ] の組み合わせで指定を行なう方法です。

Alias + [ ディレクティブオプション ]で許可する場合

以下のようにドキュメントルート外のディレクトリをディレクティブで CGI 実行の指定を行なっても動きません。なぜなら、ブラウザに対してどのアドレスに表示してよいのか、Apacheには解らないからです。

   <Directory /Project_data/work/cgi-bin> → ドキュメントルート外
     Options +ExecCGI
     AddHandler cgi-script .cgi .pl
   </Directory>

このような場合は、以下の様に Alias を使ってドキュメントルートにマッピングを行なう必要があります。

   Alias /PROJECTS/work01/ "/Project_data/work01/"
   <Directory /data01/work/cgi-bin> → ドキュメントルート外
     Options +ExecCGI
     AddHandler cgi-script .cgi .pl
   </Directory>

Aliasの指定により、実際のディレクトリ/Project_data/work01/の内容を

http://mydomain.net/PROJECTS/work01/ → Alias処理されたアドレス

のアドレスで表示するように指定されています。 cgi-binディレクトリは Alias によりマッピングされた/Project_data/work01/ 以下にあるので Apacheは何処に表示すれば良いのか理解する亊ができます。よってディレクティブオプションでCGI実行を許可する指定が通ります。

ScriptAlias で許可する場合

ScriptAlias の扱いはAliasとまったく同じです。異なる点は、ScriptAliasでマッピング処理されたファイルディレクトリは CGI が実行可能になります。

ScriptAlias /PROJECTS/work01/cgi-bin/ /Project_data/work/cgi-bin/

その他の方法

ドキュメントルート外での公開はAliasを使用する以外にシンボリックを使う方法があります。 ディレクティブ設定でシンボリックを有効にするようにオプションを指定する必要がありますが、一般的にサーバー負荷が高くなるため、セキュリティ上、管理面での利用はお勧めできませんので、ここでは割愛します。

末尾のスラッシュ " / " について

/PROJECTS/work01/cgi-bin/ このように末尾にも " / " を指定した場合、

http://mydomain.net/PROJECTS/work01/cgi-bin

ではアクセスできません。

http://mydomain.net/PROJECTS/work01/cgi-bin/

でアクセスが可能になりますので注意してください。ディレクティブ指定で末尾に " / "を付けた場合、Apache はディレクトリとしてしか認識しないので注意が必要です。

参照 URL => Googlebotとデフォルトファイル

HTML 制作者がアンカータグを指定する場合に関係してきますので、注意する必要があります。 これらの、ディレクトリに関するApache の挙動は、mod_dir モジュールで行われます。これらの設定に関しては、下記ドキュメントを参考にして下さい。 (Apache2)

参照 URL => Apache モジュール mod_dir

その他の注意点

参照元のディレクトリ名とマッピングされてる名前が重複しないように注意します。

例えば、

ScriptAlias /cgi-bin/ /hogehoge/projects/cgi-bin

とし、従来の/cgi-bin/ ディレクトリにマッピングする場合、/hogehoge/projects/cgi-bin に設置したスクリプトをデフォルトの cgi-bin ディレクトリにあるかのように処理する事も出来ますが、この異なる二つのディレクトリに、同名のディレクトリ、スクリプトが存在した場合、エラーになります。

まとめ

ドキュメントルートにおいては、トップの階層から下っていくだけなので、どの位置に表示すべきかはApacheは容易に理解できます。これらに例外を設けるのが Alias 及び ScliptAlias の役割と考えると解り易いと思います。つまり、内部的に階層構造を処理する事で、FTPなどの外部からの接続と公開(CGI 実行)ディレクトリを物理的に遮断する事が可能になるという訳です。

Apache2 管理・設定例


Apache に関する書籍案内

bottom_mark
ページ最上部
ページ最上部 前のページ