Apacheで使うモジュール、使わないモジュール

Apacheをインストールした時に標準でついてくるモジュールのうち、よく使うモジュールと使わないモジュールを分類しました。

自分はメンテナンスがめんどくさいのでApacheはレポジトリの標準のものを利用しています。バージョンは2.2です。

バージョンの調べ方

バージョン情報はapachectlで表示できます。

# apachectl -V

モジュールの機能の調べ方

標準でついてくるモジュールは全て公式サイトのマニュアルに機能の概要と設定方法の詳細が書いてあります。

モジュール一覧 – Apache HTTP サーバ

結構情報量があるので、全部目を通すと言うことは考えなくて良いと思います。が、興味深いモジュールがあるかもしれないので流し読みしてみると良いかもしれません。

必要なモジュールと必要のないモジュール

必要・重要なモジュール

そして肝心のモジュールの一覧がこれです。比較的少ないです。

authn_default_moduleやauthz_default_moduleは将来、認証系のモジュールを追加した時に追加漏れを防ぐために残してあります。

authn_default_module
authz_host_module
authz_default_module
log_config_module
env_module
expires_module
deflate_module
headers_module
setenvif_module
mime_module
dir_module
actions_module
alias_module
rewrite_module
cgi_module

使わないモジュール

使わないモジュールの一覧です。ベーシック認証やダイジェスト認証は人によっては使うと思うので好みに応じて有効化すればよいと思います。

サーバーレベルでのユーザー認証(=Apacheのダイジェスト認証やベーシック認証)は、CGIやPHPのアプリレベルのユーザー認証と違いアプリごとにバグが混入する性質のものでは無いので自分は好きです。

auth_basic_module ベーシック認証
auth_digest_module ダイジェスト認証
authn_file_module 認証情報にファイルを利用する場合に使う → .htpasswordファイル見たいな
authn_alias_module 認証情報に複数の情報源を利用するときに便利
authn_anon_module 認証情報として「匿名ユーザー」を認める場合に使う
authn_dbm_module 認証情報にDBMを使う。
authz_user_module ユーザー毎にアクセスを管理する
authz_owner_module ファイルオーナーを元にアクセスを管理する
authz_groupfile_module グループごとにアクセスを管理する
authz_dbm_module authz_groupfile_moduleと同様のことをDBMを使う

次のモジュールは自分は通常のWebサーバーの用途ではあまり使ってないです。が、使っているものもあります。

ldap_module LDAP連携をする。他のモジュールと組み合わせて使う
authnz_ldap_module アクセスの管理にLDAPを使う
include_module SSIを使う。 → SSI便利だよね
logio_module データ転送量をログに記録できるようにする
ext_filter_module レスポンスにフィルタをかける → 楽しいけど使わない
mime_magic_module ファイルの内容を参照してMIMEタイプを判断する
usertrack_module ユーザーをCookieを使ってトラッキングできるようにする → 静的コンテンツでもCookieが出力される!ログにも記録できる!
dav_module DAVアクセスできるようにする
status_module サーバーの利用状況を出力できるようにする → サーバーの初期導入時には重要!
autoindex_module ディレクトリにアクセスした時にファイルの一覧を表示させる。21世紀初頭の現代ではデフォルトで利用する理由は見いだせないし、必要無いので絶対にコメントアウト
info_module サーバーの設定情報を出力できるようにする
dav_fs_module DAVを利用してファイルシステムにアクセスできるようにする
negotiation_module コンテンツネゴシエーション用 → 意外に使わなかった
speling_module スペルミスをしても修正してリダイレクトしてくれる
userdir_module ローカルユーザー毎に http://example.com/~username/  形式でWebコンテンツを公開できる
proxy_module プロキシ機能
proxy_balancer_module リバースプロキシでバランサーとして動作させる
proxy_ftp_module FTPサイトへプロキシできるようにする
proxy_http_module HTTPプロキシ機能。リバースプロキシ、フォワードプロキシする時に利用する
proxy_connect_module リバースプロキシを提供するときにConnectメソッドを使えるようにする。 → ひょっとしたらWebSocketにも使える?
cache_module コンテンツのキャッシュ機能(disk_cache_module,mem_cache_module)
suexec_module CGIでsuexecを使えるようにする
disk_cache_module ディスクを利用したHTTPキャッシュを提供する
file_cache_module サーバー起動時にファイルをメモリに読み込みキャッシュする → ファイル変更時にはサーバー再起動が必要…
mem_cache_module メモリを利用したHTTPキャッシュを提供する
version_module サーバーのバージョンごとの設定が行えるようになる

 せっかちな人のために…

githubに今すぐコピペできる設定を置いておきました。

# LoadModule auth_basic_module modules/mod_auth_basic.so
# LoadModule auth_digest_module modules/mod_auth_digest.so
# LoadModule authn_file_module modules/mod_authn_file.so
# LoadModule authn_alias_module modules/mod_authn_alias.so
# LoadModule authn_anon_module modules/mod_authn_anon.so
# LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
# LoadModule authz_user_module modules/mod_authz_user.so
# LoadModule authz_owner_module modules/mod_authz_owner.so
# LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
# LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
# LoadModule ldap_module modules/mod_ldap.so
# LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
# LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
# LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
# LoadModule ext_filter_module modules/mod_ext_filter.so
# LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
# LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
# LoadModule dav_module modules/mod_dav.so
# LoadModule status_module modules/mod_status.so
# LoadModule autoindex_module modules/mod_autoindex.so
# LoadModule info_module modules/mod_info.so
# LoadModule dav_fs_module modules/mod_dav_fs.so
# LoadModule vhost_alias_module modules/mod_vhost_alias.so
# LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
# LoadModule speling_module modules/mod_speling.so
# LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
# LoadModule proxy_module modules/mod_proxy.so
# LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
# LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
# LoadModule proxy_http_module modules/mod_proxy_http.so
# LoadModule proxy_connect_module modules/mod_proxy_connect.so
# LoadModule cache_module modules/mod_cache.so
# LoadModule suexec_module modules/mod_suexec.so
# LoadModule disk_cache_module modules/mod_disk_cache.so
# LoadModule file_cache_module modules/mod_file_cache.so
# LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule cgi_module modules/mod_cgi.so
# LoadModule version_module modules/mod_version.so

但し、本当にこれをコピペしてhttpdを再起動しても動きません。
これはnegotiation_moduleとautoindex_moduleのディレクティブが標準設定に記載されているためです。適度にhttpd.confを修正して使ってください。

13,311 thoughts on “Apacheで使うモジュール、使わないモジュール”