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 Definitions の 14.9 Cache-Control を見る。
- Pragma
- 特殊な追加情報を指定する。これはHTTP/1.0からある。 no-cache を指定することも出来る。詳しい情報は HTTP/1.1: Header Field Definitions の 14.32 Pragma を見る。
まとめ
眠気と戦いながら、調べながらメモしたので全然まとまってないや。
でも、忘れた時に見るべき場所は分かったので、それだけで良しとする。
また理解出来た頃にちゃんとまとめようと思う ![]()
- Posted at:
- 2008/05/01 02:26:03
- 0 Comments
- 0 TrackBacks
- Trackback:
- http://humming.via-kitchen.com/2008/05/01/cache-control-headers/trackback/
mod_wsgiでHTTP_AUTHORIZATIONを受け取る。
Django でDigest認証用のバックエンドを書いていたんだけれども、 Apache と mod_wsgi で動かすとなぜか認証を通過出来ない。
で、色々と泥臭いデバッグを繰り返したところ、 そもそも HTTP_AUTHORIZATION ヘッダが渡されていない様子。
request.META.get('HTTP_AUTHORIZATION') # <-- コレがNoneになる。
ちょこっとググってみる前に、 mod_wsgi のドキュメントを眺めてみると、 ちゃんと Configuration Guidelines や Configuration Directives に書いてありました。
WSGIPassAuthorization On
これを VertualHost ディレクティブに追加したら、 バッチリ HTTP_AUTHORIZATION を受け取れた! 認証も通りましたですよ!
セキュリティ面から、 WSGIPassAuthorization ディレクティブはデフォルトではOffらしい。 なるほどなるほど。
- Posted at:
- 2007/12/27 01:43:07
- 2 Comments
- 0 TrackBacks
- 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
- 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
- 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
apr と apr-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
先にインストールした apr 、 apr-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.conf の Listen と ServerName だけ編集して起動してみる。ちゃんと動いた。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_wsgi な apache なのですがそれはまた近い?うちにでも。
- Posted at:
- 2007/06/17 05:30:18
- 0 Comments
- 0 TrackBacks
- Trackback:
- http://humming.via-kitchen.com