Apache2のインストール
Apache2のインストールメモです。特にここでは、 WebDAV機能を試すため、WebDAV対応でビルドします。 環境はRed Hat Linux 7.3、httpd-2.0.50です。

  1. Apacheのホームページ からリンクを辿り、httpd-2.0.50.tar.gz をダウンロードします。
  2. 適当なディレクトリで展開し、configure→make→make installです。

    % sh configure --enable-dav --enable-rewrite --enable-so --enable-ssl
    % make
    # make install
    

    davモジュールの他に興味のある、rewriteモジュールも一緒につけてやりました。


Apache2のインストール (Windows編)
Windows XP Home EditionのPCで、Apache 2.0.50とApache 2.2.8を試しました。
またWindows 7 Home PremiumのPCで、Apache 2.2.14を試しました。

  1. まず、古いバージョンのApacheが入っていたら、 コントロールパネル→プログラムの変更と削除を使って、アンインストールする必要があります。
  2. Windows用にはコンパイル済みのバイナリが.msi(Windowsインストーラ)形式で配布されています。 総本山から 「Download」→「binaries」→「win32」と辿り、 apache_2_*_**-win32-x86-no_ssl.msiをダウンロードします。
  3. ダブルクリックするなどして起動すると一本道でインストールできます。 インストール位置は、ルートを例えば C:\Wintools\Apacheとすると、 実際のApache HTTP Serverのbinディレクトリは バージョン2.2の場合 C:\Wintools\Apache\bin、 バージョン2.0の場合 C:\Wintools\Apache\Apache2\bin のようになります。 インストールが完了すると、そのままタスクバーに常駐します。(ApacheMonitor.exe) このApache Monitorを使うと、「サービス」パネルを開かなくても、タスクバーで起動・停止・再起動ができます。
  4. Webブラウザでhttp://localhost/ (インストール時にポートを80以外にした場合は http://localhost:{ポート番号}/) にアクセスしてみます。
    バージョン2.2の場合「It Works!」という文字だけのごくシンプルな画面が表示されます。
    バージョン2.0の場合は「あなたの予想に反して、このページが見えているでしょうか?」 という画面が表示されます。
なお、ApacheをWindowsサービスに登録したり、解除したりするには、 Apache.exeに-kオプションをつけて実行します。

Apache.exe -k install
Apache.exe -k uninstall

WindowsXPだとブロックされるので、ブロックを解除します。


基本的な設定
DocumentRootで文書のルートディレクトリを変更できます。 ここを変更すると、合わせて「Directory {ルート}」の部分のパスも変えてやらないと、 http://localhost/ にアクセスしたときに「Forbidden」などと表示されてしまいます。


文字化け解決のためのhttpd.confの設定
日本語を使った文書を配信したときに、ブラウザが文字セットを「ISO-8859-1」 だと勝手に判断して文字化けしてしまう (明示的にシフトJISや日本語EUCに変更すると、正しく表示できる)場合は、 httpd.confのAddDefaultCharsetを変更します。

AddDefaultCharset Shift_JIS
#AddDefaultCharset EUC-JP
#AddDefaultCharset ISO-8859-1

または、最初から書かれている「AddDefaultCharset ISO-8859-1」をコメントにしてしまうだけ、 でも解決できるようです。


セキュリティに関するhttpd.confの設定
ディレクトリリスト表示の禁止
URLでディレクトリに直接アクセスされたとき、 デフォルトではディレクトリ内のファイルがリスト表示されますが、 これをしないようにするには、オプションの「Indexes」を削ります。

<Directory "/usr/local/apache2/htdocs">
    #Options Indexes FollowSymLinks MultiViews
    Options FollowSymLinks MultiViews
</Directory>

特定のホスト・ネットワークからのみアクセスを許可する

<Directory "/usr/local/apache2/htdocs">
  #Order allow,deny
  #Allow from all
  Order deny,allow
  Deny from all
  Allow from 192.168.1.251 192.168.1.252 127.0.0.1
</Directory>

または「192.168.」のように上位ネットのみでも指定できます。

HTTPレスポンスにOSやApacheの情報を含めないようにする

ServerTokens Prod

サーバが出力するエラーページ、FTPリストページなどにApacheのバージョンを表示しない

ServerSignature Off

Content Security Policy(CSP)を使用してXSS対策をする
サイト全体に適用するならhttpd.confに、特定のディレクトリにのみ適用するなら.htaccessに以下のように記述します。

<IfModule mod_headers.c>  
  Header set Content-Security-Policy "default-src 'self' 'unsafe-inline' https://code.jquery.com"
</IfModule>

default-srcはこのWebサーバが配信する全ての応答に適用されます。 これに対して、script-src(JavaScriptの.jsファイル等)、style-src(CSSスタイルシートの.cssファイル)、 img-src(画像ファイル)等の詳細分類をセミコロン";"で区切って続ければそちらが優先されます。
値の意味ですが、selfは自分のサイトの文書のみ読み込み許可、 unsafe-inlineはdiv style="..."のような記述の許可、 https://jquery.comのようにサイトを指定するとそのサイトの文書の読み込みを許可します。 これらを複数指定するときは空白を挟んで続けます。
一点注意があります。.htmlや.phpなどのHTML文書に記述した div style="..." のような記述は、style-src: 'unsafe-inline' で許可されるでしょうか?
答はされません。 style-src:は.cssのようなHTMLから読み込まれる外部ファイルに対する許可なので、 .html文書に対する記述には効きません。default-src: 'unsafe-inline' と書く必要があります。


その他のTips
Apache本体と一緒にコンパイルされているモジュールの一覧を表示する
「httpd -l」でリストできます。

Open Source Web Architecture Top

(first uploaded 2002/08/11 last updated 2025/10/11, URANO398)