LoginSignup
4

More than 5 years have passed since last update.

apacheの設定ファイル基礎 自己解釈

Last updated at Posted at 2016-05-25

概要

公式の「設定ファイル」のページ「セクションの設定」ページの自己解釈です。

基本的に、Apache HTTP サーバ バージョン current ドキュメントをFacadeとして、ここから追う。

用語

ディレクティブの解説に使われる用語を参照してくれ。

基本

「逐次」と「分岐」で成り立つ、構造化プログラミング的なナニカ

「繰り返し」は、「アクセスごと」に行われる、と思っとけば、「繰り返し に制限のある構造化プログラミング」と捉えられる。

サーバデーモンの(再)起動時に設定ファイルをコンパイルして、アクセスごとに処理する感じ。

文法

設定ファイルの文法まとめ。

  • 1行に1ディレクティブ(設定)。スクリプト言語的な感じ。
  • シェルスクリプトと同じ感じで、「行末に"\"(バックスラッシュ)」で1ディレクティブを複数行にわたって記述できる。
    • バックスラッシュと改行コード間に、空欄とか文字とかがあったらダメ。
  • 関数名は、大小文字を区別しないが、引数の文字列では区別する。(区別しないディレクティブもある。)
  • ハッシュ文字"#"で始まる行は、コメントになる。
    • ディレクティブの行末とかにコメントを書くことはできない。
  • 空行は無視される。
  • インデントそのものは意味を持たないので、自由にインデントできる。
    • リーダブルコードに則って、インデントすべき。
  • 設定ファイルのLintは、apachectl -t できる。

モジュール化されたサーバ

Apacheはモジュール化されたサーバです。コアサーバには最も基本的な機能だけが含まれています。

だそうです。

コンパイル、プリプロセス

以下のディレクティブは、コンパイル時に処理される。(C言語のプリプロセス的な感じ。)

コンパイル時に偽になったら、常に無視されるようになる。コンパイル時に最適化で消し去ったりしないのかな。

分岐(セクション)

とりあえず、セクションの設定を参照する。

ファイルシステムとウェブ空間とかも重要。

「ディレクトリ」セクション

バーチャルホスト」セクション

逐次(処理の順番)

以下の順番で、マージされていく。同じディレクティブがある場合は、より後に実行されたほうが優先される。(上書きされていく。)

ただし、優先度がある。CSSの詳細度みたいな感じ。CSSの詳細度と同じノリで定義してみる。優先度が高いやつほど、あとから適用される。(より優先度が高いやつで上書きするように処理する。)

  1. Location と LocationMatch セクションなら1
  2. Files と FilesMatchセクションなら1
  3. 正規表現を使ったDirectoryセクションでのパスの深さ
  4. .htaccess(Directoryセクション風に使うので。)なら1
  5. Directoryセクション(or Proxyセクション)での、パスの深さ。(正規表現を使うと、DirectoryMatchセクション扱いになる。)
  6. バーチャルホストなら1、違う(メインサーバ)なら0。


以下の設定は、A→B→C→D→E の順で評価される(上書きしていく)。結果、Eで書いた奴が一番優先される。

#XXXXXX は、CSSで言う詳細度。


<Location />
  #100000
  E
</Location>


<Files f.html>
  # 010000
  D
</Files>

<VirtualHost *>
  <Directory /a/b>
    # 000021
    B
  </Directory>
</VirtualHost>

<DirectoryMatch "^.*b$">
  # 001000
  C
</DirectoryMatch>


<Directory /a/b>
  # 000020
  A
</Directory>

環境変数

Apache の環境変数を参照する。

やばそうなやつ

「設定ファイルなのにチューリング完全にしちゃった(てへぺろ)」とか、「Webサーバだと思ったら、(大体)CGIだった」とか。

セクション

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4