今更だけど CentOS-7 + httpd-2.4 の設定ファイル構成を考えてみる
背景
CentOS-7 なら当然の如く httpd-2.4 を使うわけですが、これまでのデフォルト値への文句を反省したのか、「じゃあ好きに設定したらいいじゃん!」とばかりに設定行が少なくなっています。
で、どのファイルに何を書こうか悩んだので、メモ程度に残すことにしました。
特にこだわりがあるのではなくどっちかというとツッコミ待ちですので、お気軽にご意見下さい。
conf/http.conf の扱い方
Global な設定を記載する場所って限定した方がわかりやすいかなぁ、と考えています。
例えば、ServerTokens とか ServerSignature とか、core モジュールに起因するものを記載する感じで。
なので、あまりいじってません。
core についての記載は最初は conf.modules.d/00-base.conf に記載するか悩んだんだけど、00-base.conf って core モジュールと関連がない上にややこしくなりそうなのでやめました。
conf.modules.d
モジュール個別の設定はできるだけ conf.modules.d/*.conf に寄せたかったけど…
結論から先に言うと、MPM チューニング設定のみ conf.modules.d/00-mpm.conf に記載しています。
最初は「LoadModule + ロードしたモジュールの設定の方が自然じゃん!」とか考えたんですが、MPM 以外にあまり適用できそうなものが無かったのですね。
MPM の設定だけなら conf.modules.d/00-mpm.conf に書くのが一番直感的かつ自然だと考えています。
01-cgi.conf とか見る限り別に LoadModule しか書いてはいけないわけではないようですし。
# LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
# LoadModule mpm_worker_module modules/mod_mpm_worker.so
LoadModule mpm_event_module modules/mod_mpm_event.so
# 値は適当だよ!
<IfModule mpm_event_module>
AsyncRequestWorkerFactor 4
StartServers 32
ServerLimit 32
MaxRequestWorkers 4096
MinSpareThreads 4096
MaxSpareThreads 4096
ThreadsPerChild 128
ThreadLimit 128
MaxRequestsPerChild 1000000
ListenBacklog 4095
</IfModule>
しかし、context が virtual host, directory, .htaccess と幅広いもの(proxy, rewrite, auth など)については流石に LoadModule 直後に書けないので中途半端な感じが否めません。MPM 以外に適用できそうなものだと SSL くらいしか思いつかず、SSL については conf.d/ssl.conf に記載しないと余計な混乱を招きそうです。
逆にチューニング値を httpd.conf や conf.d/mpm.conf に記載するのも考えたのですが、conf.modules.d/00-mpm.conf から分離する理由としては弱いのでやめました。
conf.d
conf.d については別に Apache 2.4 関係ないですね。2.2 と同構成です。しかも完全に個人的な好みになってしまいました。
conf.d/ssl.conf が使いづらい
ssl.conf ってそのまま使うこと殆どないので、welcome.conf と同じく全コメントアウト(削除すると yum update で復活してしまう…)して、ssl.sni.conf とか作ってます。
最低限の SSL 共通設定を ssl.sni.conf でやって、ホストごとの設定は Include で対処。
# SSL 設定は ssl.sni.conf に寄せました。
# Mozilla SSL Configuration Generator とか参考に SSL 共通設定を書く。
# SNI 使う。
SSLStrictSNIVHostCheck off
Include conf.d/ssl-vhosts.d/*.conf
ここら辺は色々模索中。
VirtualHost 管理はホストごとに分離したい
先程の conf.d/ssl-vhosts.d/*conf と同様に conf.d/vhosts.conf を作り Include させています。
Include conf.d/vhosts.d/*.conf
その他
VirtualHost 間の共通設定は Include 使っちゃう
ServerAlias だけでは吸収しきれないような場合、割りと積極的に Include しちゃいます。
ServerName a.example.com
CustomLog logs/a.example.com/a.example.com-access.log
# a.example.com だけの設定
# 共通部 Include
Include conf.d/vhosts.d/include/a_b-common.conf
ServerName b.example.com
CustomLog logs/a.example.com/b.example.com-access.log
# b.example.com だけの設定
# 共通部 Include
Include conf.d/vhosts.d/include/a_b-common.conf
# a.example.com, b.example.com 共通
ちなみに上記の例であれば別に無理して二つのファイルに分けるより SetEnvIf で対応すべきですね。
書いてみたら Apache-2.4 がほぼ関係なくなった件。うーん。
Author And Source
この問題について(今更だけど CentOS-7 + httpd-2.4 の設定ファイル構成を考えてみる), 我々は、より多くの情報をここで見つけました https://qiita.com/MasahitoShinoda/items/336b09efcc82aab1a2c6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .