Apacheは「 デフォルト無効」の理論に基づいているため、「httpd.conf」を編集していかなければ自分がやりたい事はデフォルトではほぼ実現できないように設定されています。これついては、Apache初心者は不便だなぁと思うかもしれませんが、セキュリティ上のことを考えると妥当なレベルに設定されていると言えるのです。しかし、いざ「httpd.conf」を実際に編集していくとなると文章が長くて、どこをどういじれば良いのかがわかりにくいものです。そこで、このページでは「 早いところ設定したい」もしくは「 やりたいことが明確である」方に絞って、局所的にその編集箇所を解説していきます。なお、ここではApacheの基本動作は理解しているものとして話を進めさせていただきます。「httpd.conf」を編集した際には必ず、Apacheを再起動してください。もし、基本的なことがわかっていない方は「 Apacheの構造」を参照してください。バージョンは2.0.55のものを使用(一部、1.3.xの解説)しています。
■CGIを使えるようにする
|
# First, we configure
the "default" to be a very restrictive set
of
# permissions.
#
<Directory "G:/public_html/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory> |
|
デフォルトでは「Options」の値に「none」と設定されていますが、CGIを動作させるようにするためには、ExecCGI
を追記する必要があります。
|
|
ScriptAlias /cgi-bin/
"G/public_html/cgi-bin/" |
|
CGIを格納しているパスを指定します。
|
|
AddHandler cgi-script
.cgi //先頭の#を取り除く |
|
ここでは、CGIプログラムと拡張子の関連付けを行います。デフォルトではコメントアウトされているので、先頭にある「#」を取り除いてください。
|
|
■SSIを使えるようにする(Apache2.0.xの場合)
|
Options ExecCGI Includes |
|
もしくは、
|
|
Options ExecCGI IncludesNoExec |
|
SSI(Server Side Include)を使えるようにするには、「Includes」を追記します。なお、SSIはセキュリティ上、危険性を孕んでいるために、安定した運用をしていくためには以下のように「IncludesNoExec」としてください。「IncludesNoExec」とすることによって、「SSIは許可するが、ExecコマンドとCGIスクリプトのIncludeは含まない」ようになります。
|
|
AddType text/html
.shtml
AddOutputFilter INCLUDES .shtml
//先頭の#を取り除く |
|
ここでは、SSIと拡張子の関連付けを行います。デフォルトではコメントアウトされているので、先頭にある「#」を取り除いてください。このディレクティブを有効にすることによって、SSIが使用できるようになります。
|
|
■SSIを使えるようにする(Apache1.3.xの場合)
|
Options ExecCGI Includes |
|
もしくは、
|
|
Options ExecCGI IncludesNoExec |
|
SSI(Server Side Include)を使えるようにするには、「Includes」を追記します。なお、SSIはセキュリティ上、危険性を孕んでいるために、安定した運用をしていくためには以下のように「IncludesNoExec」としてください。「IncludesNoExec」とすることによって、「SSIは許可するが、ExecコマンドとCGIスクリプトのIncludeは含まない」ようになります。
|
|
AddType text/html
.shtml
AddHandler server-parsed .shtml //先頭の#を取り除く |
|
ここでは、SSIと拡張子の関連付けを行います。デフォルトではコメントアウトされているので、先頭にある「#」を取り除いてください。
|
|
Apache2.0 では、デフォルトでインデックス表示されなくなりました。
(Apache1.3.xの場合)
|
# Note that "MultiViews"
must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
Options Indexes |
|
Apache1.3.x にはデフォルトでファイルを一覧表示させる機能が有効になっています。これは、セキュリティ上、好ましいことではないし、意味もなく階層構造を見せる必要性も感じないので、意図的にそのように設定しているのでなければ、一覧表示しないように設定した方が無難でしょう。上記に記述されている「Indexes」という部分を取り除くことによって一覧表示を中止させることができます。なお、ここでの設定は制御ファイル「.htaccess」に「Options
-Indexes」と記述することによっても可能です。Apacheの設定ファイルを極力、いじりたくないのであれば「.htaccess」に記述した方がよいかもしれません。
|
|
|
<Directory "f:/www/public_html">
Options FollowSymLinks ExecCGI Includes
AllowOverride all
Order allow,deny
Allow from all
</Directory> |
|
アクセス制限は基本的には「httpd.conf」をいじらずに「.htaccess」で制御した方が良いと思います。一応、解説をしておくと、「Order
allow deny」では、「allow(許可)」と「deny(拒否)」の評価順を指定しています。デフォルトの指定では、以下に「Allow」と「Deny」の両方が指定されていた場合、「Allow」の指定を先に処理し、「Deny」の指定を後から処理するようにしています。よって、指定に矛盾が生じた場合には後から指定した処理が有効となります。
◎アクセス制限設定例
Allow from 192.168.0.150 |
←「192.168.0.150」のIPアドレスだけ受け入れる。 |
Deny from 192.168.0.150 |
←「192.168.0.150」のIPアドレスだけ拒否する。 |
Allow from 192.168.0 |
←「192.168.0」を含む全てのホストを受け入れる。 |
Allow from koro.mydomain.com |
←「koro.mydomain.com」のホストだけ受け入れる(小分類)。 |
Allow from mydomain.com |
←「mydomain.com」のホストだけ受け入れる(大分類)。 |
|
|
|
# "AuthConfig",
and "Limit"
#
AllowOverride All #「none」を「All」に変える |
|
「httpd.conf」はデフォルトでは「.htaccess」でのアクセス制御を許可しないようになっています。つまり、ここの値を変えないといくら「.htaccess」を何十個、設置しようとも有効にならないので注意してください。初期値の「Override」は「none」(アクセス権を指定しない)になっていますが、「.htaccess」での制御を有効にするためには、「All
」に変える必要があります。なお、「All
」にすると、Multiviews以外の全てのオプションが有効になりますが、場合によっては必要に応じて許可するようにしようにしてください。参考までに以下にOverrideオプションを掲載します。
|
|
◎Override(上書き)のオプション
オプション名 |
解説 |
None |
全てのオーバーライド(上書き)を禁止します。 |
|
All |
MultiViewsを除いた全てのオプションを許可します。 |
|
Options |
Optionsディレクティブの使用を許可します。
例:)ExecCGI、Includes、Indexes |
|
Indexes |
ディレクトリ一覧表示を許可します。
例:)FancyIndexing、AddIcon、AddDescription |
|
AuthConfig |
認証設定を許可します。
例:)AuthName、AuthType |
|
FileInfo |
ドキュメントタイプを制御するディレクティブの使用を許可します。 |
|
Limit |
特定のホストからのアクセスを制御するディレクティブの使用を許可します。
例:)GET、POST |
|
バーチャルホストとはその名の通り、仮想ホストのことで、これによって一台のコンピュータを使用して複数のWebサイトを運用することができるようになります。即ち、バーチャルホストを使うとあたかも、複数台のコンピュータが稼動しているかのように見せかけることができるのです。趣味の多い方などはそれぞれにジャンル分けして、多数のWebサイトを運営していくと良いでしょう。バーチャルホストには大きく分けて2つの方法があります。ひとつは最も一般的であるとされている、ひとつのIPアドレス、一枚のNICだけで構築されるネームベースによる方法と、もうひとつは複数のIPアドレスを使用してそれぞれにホストを割り当てるIPベースによる方法です。以下にその詳細を解説していきます。
■ネームベース
ネームベースによるバーチャルホストはIPアドレスがひとつで、NICも1枚しかない環境下でもWebサイトを複数運営できるようにした方法です。ネームベースによる方法は至って単純で、ホスト名とそれに対応するIPアドレスを「httpd.conf」で編集してあげるだけです。
■IPベース
IPベースでは、あらかじめ設定するホストに複数のNICを装着し、それぞれにIPアドレスを設定する必要があります。NICを複数枚挿さなくてはいけないため、ハードウェアの関係上、ネームベースのバーチャルホストと比べて実用性に乏しいの欠点です。ここでは、「win.kororo.jp」と「kororo.dyndns.org」のドメインに対してIPアドレス「192.168.0.1」と「192.168.0.2」をそれぞれ割り当てるものとします。
プロバイダのHPスペースを借りている方のWebページのURLは、「http://ocn3.ne.jp/~ユーザー名」のように「~」(チルダ)を間に挟んでユーザー名がくるケースがほとんどでしょう。これは、ユーザー(会員)ごとにディレクトリがプロバイダ側で専用に設けられているためです。ここで、チルダの意味を知らない方のために簡単に説明すると、URLに「~」がついている場合、そのユーザー用ディレクトリが2階層以上、下の階層に設けられていることを表しています。
チルダの意味が理解できたところで、実際にApacheでチルダを用いる方法を解説しましょう。このチルダを利用する用途としては、バーチャルホストを使って複数のドメイン名を用いるほどでもないようなWebページを作成する際や、家庭内で親兄弟もWebページを運営したいといった場合、ミラーサイトを作りたい場合などに重宝することでしょう。
|
<IfModule mod_userdir.c>
UserDir "G:/www/public_html/users/"
</IfModule> |
|
「httpd.conf」で上記のようにドキュメントルートの下に適当なフォルダを格納して、その下に個人用ディレクトリを置くようにします。ここでは、「users」ディレクトリの中に個人用のディレクトリを入れるように設定しています。編集し終わったら、Apacheを再起動して、「http://koro.xxx.jp/~XXX」や「http://koro.xxx.jp/YYY」などのようにURLを打ち込んでみてください。XやYには自分で作成したディレクトリの名前を指定します。
|
|
|