limitusus’s diary

主に技術のことを書きます

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が飛んでくる