Tag/apache

キャッシュ関連のヘッダメモ

なんとなくで通り過ぎてたのを調べてみたメモ。 知ってたのも知らなかったのも、恥を晒すためにもブログに書いておく。

リクエストヘッダ

If-Modified-Since

日時を指定し、それより新しいコンテンツの場合にのみデータを返すようにサーバにリクエストする。

Ajaxでのキャッシュ抑制のために以下の設定で頻繁に使ってるな。

If-Modified-Since: Thu, 01 Jan 1970 00:00:00 GMT

この使い方が合ってるのかは分からんですけども、 QueryStringに時間をくっつけてキャッシュから逃げるやり方よりかは、 こっちの方がスマートで好き。

If-None-Match

エンティティタグを指定し、一致しない場合にのみデータを返すようにサーバにリクエストする。

If-None-Match: "xyzzy"

とか

If-None-Match: *

とか指定するらしい。意図的に付ける場面はまだ思いつかないなぁ。

レスポンスヘッダ

Expires
コンテンツの有効期限を指定する。
Last-Modified
コンテンツの最終更新時刻を指定する。 If-Modified-Since と対で使用される。
ETag

コンテンツを特定するための固有値を指定する。 If-None-Match と対で使用される。

Proxyとか使ってる場合にコイツが悪さをする事があるらしい。 その場合、設定を変えてやる必要がある。デフォルトだと以下になってる。

# デフォルトだとi-node, 最終変更時刻, ファイルサイズを見る。
FileETag INode MTime Size

i-nodeなどが邪魔してる場合は INode を外してやる。

# 最終変更時刻, ファイルサイズを見る。(i-nodeは見ない。)
FileETag MTime Size

Directory, VirtualHost なディレクティブでも指定出来る。詳しくは core - Apache HTTP サーバFileETag を見る。

共通ヘッダ

Cache-Control
そのまま。キャッシュコントロールに関する指定をする。 HTTP/1.1から追加されたらしい。詳しい情報は HTTP/1.1: Header Field Definitions14.9 Cache-Control を見る。
Pragma
特殊な追加情報を指定する。これはHTTP/1.0からある。 no-cache を指定することも出来る。詳しい情報は HTTP/1.1: Header Field Definitions14.32 Pragma を見る。

まとめ

眠気と戦いながら、調べながらメモしたので全然まとまってないや。 でも、忘れた時に見るべき場所は分かったので、それだけで良しとする。 また理解出来た頃にちゃんとまとめようと思う :-P

Posted at: 
2008/05/01 02:26:03
0 Comments
0 TrackBacks
Tags: 
apache
REST
Trackback: 
http://humming.via-kitchen.com/2008/05/01/cache-control-headers/trackback/

mod_wsgiでHTTP_AUTHORIZATIONを受け取る。

Django でDigest認証用のバックエンドを書いていたんだけれども、 Apachemod_wsgi で動かすとなぜか認証を通過出来ない。

で、色々と泥臭いデバッグを繰り返したところ、 そもそも HTTP_AUTHORIZATION ヘッダが渡されていない様子。

request.META.get('HTTP_AUTHORIZATION')  # <-- コレがNoneになる。

ちょこっとググってみる前に、 mod_wsgi のドキュメントを眺めてみると、 ちゃんと Configuration GuidelinesConfiguration Directives に書いてありました。

WSGIPassAuthorization On

これを VertualHost ディレクティブに追加したら、 バッチリ HTTP_AUTHORIZATION を受け取れた! 認証も通りましたですよ!

セキュリティ面から、 WSGIPassAuthorization ディレクティブはデフォルトではOffらしい。 なるほどなるほど。

Posted at: 
2007/12/27 01:43:07
2 Comments
0 TrackBacks
Tags: 
apache
Django
mod_wsgi
Python
Trackback: 
http://humming.via-kitchen.com/2007/12/27/passed-httpauthorization-on-modwsgi/trackback/

mod_wsgi-1.0出てたよ。

mod_wsgi-1.0 がもう5日も前にリリースされてたよ。全然知らなかった。

apache を2.2.6にアップデートするタイミングで mod_wsgi もアップデートしなきゃね。 週末にでも一気にやってしまいそうな勢い。 Senna とか tritonn もそろそろアップデートな感じなので、ワクワクしてしまう。

でも、どう転んでもサイト止めてしまうのがちょっと悲しい。

Posted at: 
2007/09/11 02:29:24
0 Comments
0 TrackBacks
Tags: 
apache
mod_wsgi
Python
Trackback: 
http://humming.via-kitchen.com/2007/09/11/mod_wsgi-1-already-release/trackback/

apache-2.2.6リリース

apache-2.2.6 がリリースされたよ!

2.0.61と1.3.39も同時リリースらしい。 結構長い間2.2.4で止まってたので、かなり色々修正されているみたい。 Change Log 詳しく見てないけど、 2.2系では mod_proxy 周りの修正が目立ってる様な。

タイミング見計らってアップデートしよう。

Posted at: 
2007/09/11 01:45:45
0 Comments
0 TrackBacks
Tags: 
apache
Trackback: 
http://humming.via-kitchen.com/2007/09/11/apache-226-release/trackback/

mod_wsgi-1.0c1がリリース!!

mod_wsgi の1.0が遂に出たよ!まだc1って付いてるけどね。

現状TRUNK rev@308とかで走っているので、1.0がリリースされたら乗せ換えよう。 mod_python よりも設定とか簡単でパフォーマンスも良い気がする(憶測含む)。

かなり待ち遠しい!

Posted at: 
2007/07/28 04:16:31
0 Comments
0 TrackBacks
Tags: 
apache
mod_wsgi
Python
Trackback: 
http://humming.via-kitchen.com/2007/07/28/release-mod-wsgi-10c1/trackback/

apache2.2でmod_proxyを使ってみる。

前々から試してみたいなぁ。って思ってた apache 2.2での mod_proxy を、 mod_wsgi 単独の apache を立てるついでに試してしまおうと思い、実験ついでにやってみた。 apache を2つも入れるの?ってツッコミはとりあえず無しの方向で。

tar で展開する時に、展開後の名前の指定の仕方が分からなかったので、とりあえずそのまま展開してコピーする時にリネームして回避。

$ cd
$ wget http://ftp.kddilabs.jp/infosystems/apache/httpd/httpd-2.2.4.tar.gz
$ tar zxf ./httpd-2.2.4.tar.gz
$ cp -R ./httpd-2.2.4 /usr/local/src/httpd-2.2.4-proxy
$ cp -R ./httpd-2.2.4 /usr/local/src/httpd-2.2.4-wsgi

aprapr-util は共通で使いたかったので apache とは別でインストールする事に。

まずは apr から。

$ cd /usr/local/src/httpd-2.2.4-proxy/srclib/apr
$ ./configure \
> --prefix=/usr/local/apr \
> --enable-maintainer-mode \
> --enable-threads

$ make
$ sudo make install

で、次は apr-util

$ cd /usr/local/src/httpd-2.2.4-proxy/srclib/apr-util
$ ./configure \
> --prefix=/usr/local/apr \
> --with-apr=/usr/local/apr

$ make
$ sudo make install

先にインストールした aprapr-util を使って apache をインストール。モジュールに関してはDSOでしこたま入れといて、 httpd.conf でオフる方向でやる事にした。

$ cd /usr/local/src/httpd-2.2.4
$ ./configure \
> --prefix=/usr/local/httpd_proxy \
> --enable-maintainer-mode \
> --enable-mods-shared=most \
> --enable-dav \
> --enable-dav-fs \
> --enable-dav-lock \
> --enable-cgi \
> --enable-cgid \
> --enable-cache \
> --enable-mem-cache \
> --enable-proxy \
> --enable-proxy-balancer \
> --enable-so \
> --with-apr=/usr/local/apr \
> --with-apr-util=/usr/local/apr

$ make
$ sudo make install

ひとまずエラー吐かずにインストールは完了。 ここで httpd.confListenServerName だけ編集して起動してみる。ちゃんと動いた。It works!!な画面がしっかり出る。上手くいったみたいなので、 mod_proxy な設定にしてみる。

ProxyRequests Off

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass / http://google.com/
ProxyPassReverse / http://google.com/

ちゃんとgoogleにフォワーディングされるものの、なぜかリクエストが / だとフォワーディングされない。

これだとあんまり意味ないので、 DocumentRoot ディレクティブと、対になる Directory ディレクティブをコメントアウトしてみたらちゃんと動くようになった。ついでに LoadModule も色々試してみた結果、

  • authz_host_module
  • proxy_module
  • proxy_http_module

だけあれば最低限動いた。本当に最低限な訳ですが。ちゃんと動かすならもうちょっと必要。 Log とか rewrite とか。

次は mod_wsgiapache なのですがそれはまた近い?うちにでも。

Posted at: 
2007/06/17 05:30:18
0 Comments
0 TrackBacks
Tags: 
apache
mod_proxy
Trackback: 
http://humming.via-kitchen.com