安易にを使うとハマるよという話

「いろんな環境にこのhttpd.conf唯一つで対応するのだ!!」とバリバリなhttpd.conf書くとハマるかもというお話です。

具体的事例としては、Allow fromとかの、通信元IPアドレスを見る設定が思うように効かないなー効かないなーと悩んでたら、こいつはreverse proxyの後ろにいるhttpdなんで、mod_extract_forwardedをロードしないといけなかったんだけどロードするのを忘れてて、 でくるんだ設定は有効にならず、エラーにもならず気がつかなかったというオチ。

httpdの起動オプションで、httpd -Denable_extract_forwarded -Denable_ya_feature とし、

<IfDefine enable_extract_forwarded>
  LoadModule extract_forwarded_module  modules/mod_extract_forwarded.so
</IfDefine>

<IfModule extract_forwarded_module>
  MEForder  refuse,accept
  MEFrefuse all
  MEFaccept 127.0.0.1 10.6.25.19
  MEFdebug  off
</IfModule>

<IfDefine enable_ya_feature>
...

な感じにすれば、httpd.confは書き換えなくともモジュールの取捨選択はできるわけですが、そこまでやらないのならどのみちhttpd.confの編集(LoadModuleのコメントイン/アウト)が必要なので、編集が必要ならついでにモジュール固有の設定のコメントイン/アウトするのもそんな手間じゃないし、IfModuleでくるまなければ、むしろ先の例のようにうっかりロードし忘れてもエラー停止するので気づけていいなーと。