Proxyから帰ってくるコンテンツにmod_sedが効かない
管理しているウェブではhttps://とhttp://の仮想ホストを分割して管理しています。
httpsでだけ管理している特別な処理をしたあとは全てのリクエストをhttpへProxyする設定にしていました。
ところがこうすると、http側で画像リンクを
img="http://images.example.com/hoge.gif"
なんて書かれているとhttpsで警告がでるから何とかしろとのオーダー。
そしたらってことでmod_sedでhttp://をhttps://に書き換えてやればいいんじゃんってことでこんな風に書いて見ました。
<Location /> AddOutputFilterBype Sed text/html OutputSed "s/http:\/\/images/https:\/\/images/g" </Location>
いっちょあがり。しかし再起動して確認しても全然効かない。なぜだ。
考えることしばし。httpsからプロクシしているhttpではDEFLATEしていることを思い出しました。
そうか。httpsからProxyしてhttpから帰ってくるコンテンツはgzipで圧縮されているからsedでは認識できないんだ。
いやぁ面倒だなぁ。結局http側の設定をhttps側へ必要な部分だけ移動、リンクなどを修正することで解決。
ちょっと悩みました。ProxyPassがgzipを解釈して展開してくれれば。。。それじゃ実際にHTTP通信するときに意味がないか。