閉じる

apache httpd上の CGIと Server Sent Events

httpdとして nginxを使っている環境では特に問題なかったのだけど、apacheを使っている環境でうまく動かない。
具体的には CGIの出力が送られてこない。
実際にはタイムアウト処理を入れてあるので、タイムアウトするまで送られてこない。
どうやら、CGIの処理が完了するまで出力がバッファリングされている模様。
結果、垂れ流してくれることを前提とする Server Sent Eventsが機能しないと。
で、「だれが?」ということで調べていくと、mod_deflate君でした。
httpd.confを見ると、「SetOutputFilter」「AddOutputFilterByType」の二箇所で指定されており、後者は具体的な MIMEタイプを指定して圧縮するけど、前者は「SetOutputFilter DEFLATE」と単純に使うと片っ端から圧縮(=バッファリング)する凶悪な指定になっていた。
というわけで、「SetOutputFilter DEFLATE」を削除することで期待どおりに動くように。

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)