apacheでS3にプロキシさせるときにbasic(digest)認証をかませていると400 bad requestになる
S3にBasic認証付きリクエストをすると400:Bad Requestになる | Siguniang's Blog
この記事のapache版。
apacheのmod_proxyでS3においてある画像にプロキシさせた時に、basic認証をかませているとS3から400 bad requestが返ってきてしまって画像が表示されなくなってしまった。
上記ブログはnginxだったので、apacheで解決したやり方をメモっておく。
<Location "/s3-images/"> RequestHeader set Authorization "" </Location> ProxyPass /s3-images/ http://hogehoge.s3-ap-northeast-1.amazonaws.com/s3-images/ ProxyPassReverse /s3-images/ http://hogehoge.s3-ap-northeast-1.amazonaws.com/s3-images/
やっていることは同じで、S3用のロケーションパス以下は Authorization
ヘッダを潰している。
これで解決。
ところで、原因を調べていたんだけど、S3のサイトにそれっぽいことが書いてあった。
どうやらS3のREST APIは認証の時に Authorization
ヘッダを使っていて、普通に(Authorizationヘッダがない状態で)プロキシしているだけだと認証情報を求められないのでそのままプロキシしてくれるんだけど、basic認証なりで Authorization
ヘッダがついてしまうとS3側で認証しようとしてコケている感じなんだろうな。(IAMの話かもだけど)
学びがあった