Apacheのhttpd.confの’Main’ server configurationの設定内容について 前半戦
アクセス制御、MIMEタイプの設定(基本部分)など。
基本情報の設定
ここでは、’Main’サーバーについての設定を行います。
‘Main’サーバーというのは、バーチャルホストとして設定された仮想的なサーバではなく大元のwwwサーバーの事を指します。
ServerAdmin root@localhost ・・・・・・ (1) #ServerName www.example.com:80 ・・・・・・ (2) UseCanonicalName Off ・・・・・・ (3) DocumentRoot "/var/www/html" ・・・・・・ (4) ・・・ (省略) ・・・ ServerSignature On ・・・・・・ (5)
(1) サーバーの管理者のメールアドレスを記載します。エラーページなどで表示されるアドレスです。
(2) サーバー名の指定を行います。エラーページなどで表示されるサーバ名です。
コメントアウトされている状態の場合、リクエストを受け付けたIPアドレスから名前解決を行って得られるホスト名が表示されます。
(3) サーバー名の指定を行います。「On」か「Off」か「Dns」が設定でき、Onの場合は(2)のServerNameが使用され、Offの場合はクライアントから送られたホスト名を使用し、Dnsの場合はDNSに問い合わせて得られるホスト名を使用します。
(4) サーバーが公開するルートディレクトリ(ドキュメントルート)を指定します。
(5) サーバーが生成するドキュメントの最後に付加するフッターの設定を行います。「On」か「Off」か「Email」を指定する事が可能で、デフォルトは「On」になっています。
なお、httpd.conf内の記述場所は、アクセス制御の設定の内容やMIMEの設定の記述などよりも後に設定が記述されています。
アクセス制御の設定
アクセス制御の設定について記載しています。
<Directory>~などの各項目については後述する「アクセス制御で設定可能なパラメータと意味」にて記載しています。
<Directory /> ・・・・・・ (6) Options FollowSymLinks AllowOverride None </Directory> <Directory "/var/www/html"> ・・・・・・ (7) Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> <IfModule mod_userdir.c> UserDir disabled #UserDir public_html </IfModule> DirectoryIndex index.html index.html.var ・・・・・・ (9) AccessFileName .htaccess ・・・・・・ (10) <Files ~ "^\.ht"> ・・・・・・ (11) Order allow,deny Deny from all Satisfy All </Files>
(6) “/”(ルート)の設定について記入しています。
「Options FollowSymLinks」はシンボリックリンクを認識できるように設定を行っています。
「AllowOverride None」は”/”以下のディレクトリ内に配置した「.htaccess」を用いた設定の変更ができないようにしています。
ここで指定した内容は全てのパスで有効になってしまいます。この領域の変更は可能な限り行うべきではありません。
(7) “/var/www/html”の設定について記入しています。
「Options Indexs FollowSymLinks」はブラウザからのディレクトリ内へのアクセスに対しての振る舞いを記述しています。
「Indexs」と付けると、ディレクトリへアクセスされたときに、(8)で指定する「DirectoryIndex」で指定されたファイルが見つからない(一般的な例でいうと index.html がない)とディレクトリの内容をリスト表示するようにするオプションです。表示させたくない場合は、項目を削除します。
「FollowSymLinks」はシンボリックリンクを認識するかどうかの指定です。
(8) ユーザー別、ユーザーによるディレクトリの公開の設定を行います。デフォルトは公開しないようになっています。
ユーザー毎のディレクトリの公開が可能になりますが、apacheユーザーがアクセスできるようにアクセス権の変更が必要であったり、SELinuxの「httpd_enable_homedirs」の設定を変更する必要があったり、CGIの利用に関しても制限を設けるか、必要に合わせて設定するのかなど無駄に決める事も増えるため、個人でサーバーを公開する場合は必要ないですし、共有サーバーでユーザー別の管理を行うにしてもftpでアクセス先を管理するなどした方がよっぽど建設的だと思います。
(9) ブラウザから「http://www.cross-ring.net/directory」のようにディレクトリ名でアクセスされた場合に、デフォルトで表示を試みようとするファイルを指定します。
(10) アクセス制御を行うためのファイル名を指定します。特に変更する必要はありません。
(11) ファイルへのアクセス制限を行うための設定です。正規表現の形で、「.ht」から始まるファイルへのアクセスを禁止しています。
特に変更する必要はありません。
MIMEタイプの設定
MIMEタイプの設定などについて記述しています。
MIMEタイプとは、ブラウザとサーバーでやり取りされている情報の1つで、ファイルの形式についてサーバーからブラウザに伝えている情報の事です。
MIME Magicとは、MIMEタイプが拡張子からファイルの内容を判断するのに対して、ファイルの先頭数バイト~数十バイトからファイルの内容を判断し、その情報をブラウザへ渡す仕組みの事です。
TypesConfig /etc/mime.types ・・・・・・ (12) DefaultType text/plain ・・・・・・ (13) <IfModule mod_mime_magic.c> ・・・・・・ (14) MIMEMagicFile conf/magic </IfModule>
(12) 拡張子別のMIMEタイプの指定が書かれたファイルを記述しています。
(13) 未定義の拡張子の場合に選択されるMIMEタイプを記述しています。
(14) MIME Magicの設定が記述されたファイルを指定しています。
httpd.confの「’Main’ server configuration」にはまだ続きがあるのですが、長すぎるので、ここで一旦区切ります。
続きは「その2」にて記載します。
【番外編】アクセス制御で設定可能なパラメータと意味
アクセス制御は「<Directory パス>~</Directory>」や「<Files ファイル>~</Files>」などの形式で記載します。Directoryはドキュメントルートからのパスではなく、Linuxの”/”(ルート)からのパスの指定が必要なことに注意が必要です。
パスやファイルには正規表現を使うことが可能で、正規表現を使う場合は「~ “<正規表現の内容>”」といった形式で記入を行います。
例えば、「<Files ~ “\.txt$”>」と記述すると、「.txt」が末尾についているファイルに対して適用する。という意味になります。
設定できる項目とパラメータは以下になります。
項目 | パラメータ | 内容 |
options | Indexes | 対象のディレクトリに対してアクセスした場合に、代替ファイル(index.htmlなど)が見つからなければディレクトリ内の一覧を表示するためのパラメータ。上位のディレクトリ設定で表示可能にしていた場合で、それよりも下位のディレクトリでリスト表示を禁止させたい場合は「options -Indexes」のように記述する。 |
FollowSymLinks | シンボリックリンクファイルを認識させるためのパラメータ。 | |
ExecCGI | CGIを実行可能にするためのパラメータ。 | |
Includes | SSIを実行可能にするためのパラメータ。 | |
IncludesNOEXEC | SSIを実行可能にするが、#exec、#cmd、#includeによるプログラムの実行を禁止する。 | |
MultiViews | ブラウザの言語設定に合わせてクライアントに送信するデータを変えたりするContent negotiated MultiViewsの機能を有効にする。 | |
SymLinksIfOwnerMatch | シンボリックリンクとリンク先が同じ所有者かどうかを確認し、同じ所有者の場合だけリンク先を辿ることが可能になります。 | |
AllowOverride | この項目について | 「AccessFileName」(デフォルトでは.htaccess)で記述したアクセス制御ファイルによる設定の変更をどこまで許可するのかを指定します。 |
None | アクセス制御ファイルによる設定の変更を無効にします。この設定を行った場合は、クライアントからのアクセスに対してサーバーでは「.htaccess」の確認を一切行いません。 | |
AuthConfig | 認証に関する設定を有効にします。Basic認証を使うための「AuthType」などを設定する場合には、このパラメータを指定する必要があります。 | |
FileInfo | リクエストされたファイルの振る舞いを指定可能にします。MIME Typeの指定をアクセス制御ファイルによって可能にするためのパラメータです。 | |
Indexes | ディレクトリをリスト表示できるようにしていた場合の表示方式などを変更可能にします。 | |
Limit | ファイルに対してのアクセス制御を指定可能にします。例えば、.txtファイルなどへ直接アクセスを禁止する事を.htaccessで指定したい場合に使用するパラメータです。 | |
Options | Optionsによる制御を.htaccessで指定可能にします。 | |
All | アクセス制御ファイルによる設定の変更を全て有効にします・ | |
Order | Deny,Allow | Allowでアクセス許可したホストよりも、Denyでアクセス拒否を設定したホストの設定が優先されます。アクセスはデフォルトで許可が設定されています。(「deny,allow」のように全て小文字で書いてもOK) |
Allow,Deny | 上記の「Deny,Allow」とは逆でAllowでアクセス許可を設定したホストが優先されます。アクセスはデフォルトで禁止が設定されています。つまり、アクセス可能なホストを個別に指定する必要があります。(「allow,deny」のように全て小文字で書いてもOK) | |
Mutual-failure | Allowのリストにあり、Denyのリストにないホストがアクセス許可される設定ですが、そもそもこの設定は「Allow,Deny」と同じ効果があり、そのため本パラメータを指定する事は非推奨とされています。 | |
Allow(Deny) from | all | 全てのホストに対してアクセスを許可(禁止)します。 |
<ドメイン名(一部、完全)> | 指定するドメインに属する全てのホストのアクセスを許可(禁止)します。 | |
<IPアドレス(一部、完全)> | 指定するIPアドレスを使用している全てのホストのアクセスを許可(禁止)します。「192.168.0.1/255.255.255.0」のようにネットマスクを組み合わせることも可能です。 | |
Satisfy | All | ホストレベルのアクセス制御とユーザー認証が設定されている場合に、その両方を満たす事を要求するパラメータです。 |
Any | ホストレベルのアクセス制御とユーザー認証が設定されている場合に、どちらかの条件を満たせばアクセス可能にする場合に指定するパラメータです。 |
トラックバック & ピンバック