暑くて死にそう

nogajun
nogajun

_

高音注意情報が出まくってるそうですが、この家、特に2階は暑すぎる…。

_ Apache 2.4にしたらコンテンツがForbiddenになった。そして直した

ここんとこのスコールでサーバーを落としたりしてたので、サーバー周りを掃除してたついでにいろいろアップグレードしていました。 その中でApacheを2.2から2.4にしたら、いきなりコンテンツがForbiddenで見れなくなったので、その辺を調べてみたメモ。

まず、エラーログを見るとこんなのがいっぱい出てました。

[Sat Aug 10 12:56:40.380847 2013] [authz_core:error] [pid 4562] [client xxx.xxx.xxx.xxx:xxxxx] AH01630: client denied by server configuration: /hoge/fuga
[Sat Aug 10 12:56:51.473301 2013] [authz_core:error] [pid 4560] [client xxx.xxx.xxx.xxx:xxxxx] AH01630: client denied by server configuration: /hoge/fuga

「 _authzcore:error 」でググると、このエラーにぶつかった人はたくさんいるらしく対処方法が出てました。 しかし、そういう人たちの書いてる事は「ここをこう書き換えれば直る」としか書いてなく、なぜそういう原因になるのか書いていなくてとても気持ち悪かったので、もう少しだけ調べてみました。

Apacheのエラーなんだから、Apacheに当たるといいのかなーと思いつつApache 2.4のドキュメントを見ると、「2.2 から 2.4 へのアップグレード」という、読めと言わんばかりのドキュメントがあったのでこれ見てみました。

すると、「Run-Time Configuration Changes」の「Access control」にそのものズバリな記述がありました。

In 2.2, access control based on client hostname, IP address, and other characteristics of client requests was done using the directives Order, Allow, Deny, and Satisfy.

In 2.4, such access control is done in the same way as other authorization checks, using the new module mod_authz_host. The old access control idioms should be replaced by the new authentication mechanisms, although for compatibility with old configurations, the new module mod_access_compat is provided.

2.4からアクセスコントロールがmod_authz_hostでおこなうことになったことと、後方互換のため今までの書式が使えるmod_access_compatが用意されているとのこと。

なるほど。じゃあ、対処方法としてはヤツらが書いてた方法以外に、mod_access_compatモジュールを有効にすれば良いわけか。これで解決。 と思ったけれど、うちの場合は大量にあるわけでもなく、mod_access_compatモジュールも非推奨で将来的には廃止されるかもなので、アップグレーディングガイドを見つつ書き換えて対処しましたとさ。

Requireの説明があるmod_authz_coreの解説を見ると、アクセスコントロール周りは大幅に変わってて細かく制御できるみたいなので、また時間を作って読んでおこう。