お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2013-03-28 07:49:56

Dr.hana
メンバ
登録日: 2011-04-24

Apache2.2とtomcat7の連携時にステータスコード304(Not modified)でページが表示されない

今回は、題名に書いた通り、Apache2.2とtomcat7の連携時にステータスコード304でページが表示されない問題で、
ご享受頂きたく投稿させてもらいました。

当方の環境はUbuntu12.04にてApacheとtomcatの通信はajpを使っております。

Apacheやtomcat7、それぞれ単独で動かしている時には304でも正常にページが表示されているのですが。
Apacheをフロントサーバとしてtomcatの管理下ページへのアクセスで304が返ってくるとページが表示されないのです。

304(Not modified)はファイルに変更が無いということで、ローカルのキャッシュを参照するものだと理解しています。
実際Apacheのアクセスログで、Apache管理下ページにて304の時の、送信量は「-」となっていましたが、正常に表示されています。

一度、ブラウザのキャッシュを消去したりCtrl+F5にてページを表示するとHTTP通信は200(OK)で正常な表示をします。
なので、Apacheのmod_headersモジュールで、tomcat以下のキャッシュを保存しないように設定したところ取りあえず問題は解決しました。
しかし、サーバーの負荷や高速性を考えると、できるだけキャッシュを使って表示ができるようにしたいです。

この問題の原因は、キャッシュのkeyで登録されるURLが、tomcat側から見えるURLと一致しないのではと考えています。

tomcat(ディレクトリ)以下をtomcatに渡しているとします。
http://localhost/tomcat/hoge/hoge.htmlのページのキャッシュは、
key:http://localhost/tomcat/hoge/hoge.htmlで保存されるわけですが、
tomcat側でapacheは見えないので、http://localhost/hoge/hoge.htmlを探しにいっているというのが自分の予想です。

以前ProxyPassReverseCookiePathというディレクティブでCookieのURLパスを変換したのですが、
これのキャッシュ版のようなものはあったりするのでしょうか。

オフライン

 

Board footer

Powered by FluxBB