Apacheの動的画像変換モジュールであるsmalllightの導入時にちょっとハマったのでメモ。
前提としてsmalllightではRewriteRuleで動的生成する画像名のパターンとオリジン画像名を指定する。
今回はオリジン画像をAmazon S3に置いており、httpd.confには
RewriteRule ^/small_light/(.+)$ https://s3-ap-northeast-1.amazonaws.com/%{bucket}/$1 [P,L]
のように書いた。
ここでリクエストを受けるページにはBasic認証をかけていると、S3へのリクエストヘッダに Authorization: Basic ...
がつき、S3がこれを許容しないためInvalidArgumentが返される、という場面に遭遇した。
今回はProxyPassをかませてAuthorizationヘッダを削除することで解決した。
RewriteRule ^/small_light/(.+)$ /s3/$1 [P,L]
ProxyPass /s3/ https://s3-ap-northeast-1.amazonaws.com/%{bucket}/
<Location /s3>
RequestHeader unset Authorization
</Location>
mod_rewriteの機能で解決できたらもっとすっきり書けそうなのでモヤっとしているけど。