Apache httpd 2.4での設定の小ネタ
Apache httpd 2.4の設定を毎回ググっては忘れるので、ポイントになるところをまとめておく
気が向いたら書き足すかも
ログまわり
ErrorLogやAccessLogは一般的には固定ファイルに書いておいてlogrotateで適宜rotateするのが一般的?かもしれない
logrotateの設定なしに最初から日付付きのファイルに書き出すことでdaily rotationさせたい場合はhttpd付属のrotatelogsコマンドを使いpipeの記法で渡す
CustomLog "| /usr/sbin/rotatelogs -l /var/log/httpd/access_log.%Y%m%d 86400" ltsv
RewriteでのProxyまわり
mod_rewriteを使ってProxyルールを細かく制御したいケース
ProxyPassRevese, ProxyPreserveHost, ProxyTimeout, TimeOut はいずれもRewriteRule [P] に対して効く(ProxyPassでない記述でも効くことはProxyPassReverseだけドキュメントに明記されているが、他の3つも効く)
もちろんProxyTimeoutは(記述すれば)TimeOutに優先する
AWS ELBからのヘルスチェック
VirtualHostで振り分けを行っている場合、AWS ELBからのヘルスチェックはHost headerがこないので、そのままではアプリケーション側で用意したヘルスチェックへアクセスが流れない。
この場合、default VirtualHostから以下のようにしてアプリケーションサーバへ流す(Proxyの場合)
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ELB-HealthChecker [NC] RewriteRule /(.*) http://<%= @application_server %>/$1 [P,env=LBHC:true] RequestHeader append Host <%= @server_name %> env=LBHC RequestHeader append X-Forwarded-Proto https env=LBHC
ALBのヘルスチェックだとELB-HealthChecker/2.0
のようなUser-Agentが飛んでくる