タグ

ブックマーク / blog.xcir.net (28)

  • VarnishCache4.0.0が公開されました – cat /dev/random > /dev/null &

    今回もgifを撮ってみました。 取得に3秒かかるコードでTTLは10秒です。expire時の動きを見てみてください。 検証コード ■date.php <?php header('Cache-Control: max-age=20'); echo date("Y/m/d H:i:s")."\n"; sleep(3); ■vcl@3.0.5 sub vcl_fetch{ set beresp.do_stream = true; set beresp.ttl = 10s; set beresp.grace = 10m; } ■vcl@4.0.0 sub vcl_backend_response{ set beresp.do_stream = true; set beresp.ttl = 10s; set beresp.grace = 10m; } grace動作 3.0.5 4.0.0 3.0で

    VarnishCache4.0.0が公開されました – cat /dev/random > /dev/null &
    hxmasaki
    hxmasaki 2014/04/11
    #v4rp
  • Varnish3.0.4が公開されました – cat /dev/random > /dev/null &

    Varnish3.0.4が公開されました。 今回はほとんどBugFixですが、いくつかの機能改善があります。 公式リリースノート(3.0.4) バグフィックス ■CVE-2013-4090 特定条件でACLで想定外のマッチ・マッチ漏れが起こる #1312 対象は3.0.3までの全てのバージョンです 引っかかる条件は以下だと思います ・CIDR形式の定義が存在(/8,/16,/24を除く) ・単一のIPアドレスを指定している ・その定義範囲が重複している こんな感じです VCLコード acl foo { "127.0.0.2"; "127.0.0.0"/19; //(127.0.0.1 ~ 127.0.31.254で127.0.0.2を含む) } Cに変換したコード(3.0.3) static int match_acl_named_foo(const struct sess *sp, co

  • VUG7で発表してきます – cat /dev/random > /dev/null &

    みなさんお久しぶりです。いわなちゃんさんです。 最近会社で、「○○さんっていわなちゃんですよね?」と確認されたりしていますが元気しています。 さて、来週の5月30日~31日にかけてニューヨークで行われるVarnish User Group Meeting 7(VUG7)で発表する機会を頂けましたので、先日会社のブログでちらっと触れたレガシーシステムを載せ替えた話といくつか作ったツールについて発表してきます。 当はVMODの話でもしようかなと考えていたのですが、MLとかIRCを見てて困ってる人が多いのはツールかなと感じたので、そっちの話をしてきます。 ツール自体の記事は、また帰ってきたら書こうと思いますがgithubにはあげていますので見てもらえれば嬉しいです。 あと、ニューヨークで美味しいものをべたいので、おすすめのお店・ここは見とけといったスポットを教えてもらえると嬉しいです。 飛行

    hxmasaki
    hxmasaki 2013/05/29
    すばらしー!
  • Varnishのストレージの話 – cat /dev/random > /dev/null &

    Varnishは様々なオブジェクトのキャッシュを行いますが その際にオブジェクトの保存を何処に行うかを選択することができます。 現在のバージョンでは malloc file persistent といった3つのストレージが存在しており、それぞれに特徴があります。 今回は特にpersistentに焦点をあてて解説します。 malloc メモリ上にストレージを置いているVarnishで一番高速なストレージです。 メモリ上に置くため当然のことながらサーバの移設での一時停止や再起動、 workerのpanicでの自動再起動などでキャッシュが吹き飛んでしまいます。 file ファイル上にストレージを置く、若干遅いストレージです。 ファイルと名前はついているものの永続化を目的としておらず、 ストレージへの書き込み時にflushしません。 読み書きはページ・バッファキャッシュ、つまりOSに任せており V

  • Generate authorization header for Amazon S3 in Varnish – cat /dev/random > /dev/null &

    Amazon S3 REST-API is necessary to generate signature. vmod-awsrest generate to Authorization and Date header for Amazon S3. How to use VCL import awsrest; backend default { .host = "s3.amazonaws.com"; .port = "80"; } sub vcl_recv{ awsrest.s3_generic( "accessKey", //AWSAccessKeyId "secretKey", //SecretAccessKeyID req.request, //HTTP-Verb req.http.content-md5, //Content-MD5 req.http.content-type, /

  • Varnish3.0.3が公開されました – cat /dev/random > /dev/null &

    Varnish3.0.3が公開されました。 今回の変更は多くのバグフィックスとツール系の機能拡充とドキュメントの整備です。 公式リリースノート varnish-cache-3.0.3 バグフィックス ・ストリーミングと正規表現の評価においてクラッシュの要因となるバグを複数修正しました。 ・ESIとGZIPにおいて壊れたオブジェクトを返却するケースが存在する問題を修正しました。 ・ESIのremoveタグ内にHTMLのコメントがあるケースにおいて不適切な削除を行なっていたのを修正 ・ban lurkerのスリープする条件の変更(回収した際は設定値・回収しなかった場合は1秒) ・多くのクラッシュの要因になるバグの修正 ・その他いろいろ修正 ツール系の機能拡充 varnishstat ・json出力オプションの追加(-j) varnishtest ・resp.bodyでレスポンスボディの評価が可

    hxmasaki
    hxmasaki 2012/08/22
    いつもお世話になっております。
  • LDAPで認証したり情報を取得するVMODを作ってみた – cat /dev/random > /dev/null &

    急に、LDAPにアクセスしてみたくなったので、勉強がてら作ってみました。 よく使われそうな、シンプルなLDAPの認証はもちろん 特定のグループにだけ許可のようなことも可能です。 VCLはロジックがかけるので、親和性が高いんじゃないかなと考えています。 シンプルなLDAPを使ったBASIC認証 import ldap; sub vcl_error { if (obj.status == 401) { set obj.http.WWW-Authenticate = {"Basic realm="Authorization Required""}; synthetic {"Error 401 Unauthorized"}; return(deliver); } } sub vcl_recv{ if(req.url ~ "^/member/"){ if(!(req.http.Authorizati

  • 社内勉強会で発表したVMODの紹介資料 – cat /dev/random > /dev/null &

    先日、社内で勉強会をした時に発表した資料(ちょっと改変)です。 最初はVMODを作るときに知っておくと楽じゃないかなぁ的なポイントを解説しようと思ったんですが そもそもVMODのワンポイントなんか社内的に誰得極まりないので 公式でリスト化されてるVMODを紹介してみました。 サービス側がこれ使ってみたいってのがあればいいなぁと考えています。

  • VarnishでAmazon S3の認証ヘッダを作るVMODを作ってみた – cat /dev/random > /dev/null &

    hiro_yさんからこんな質問を受けたので @xcir VarnishからS3の認証突破する方法とかご存知ないですか…と思いまして — 山岡広幸さん (@hiro_y) 7月 2, 2012 AWSの勉強がてら作ってみました。 S3のREST-APIのAuthorizationヘッダは、日付やリソースの場所などを改行で結合して HMAC-SHA1でハッシュ化して、BASE64エンコードする必要があります。 HMAC-SHA1については、Varnish公式が公開しているvmod-digestを使うことでできるのですが 出力をBASE64にすることができないので、コードを拝借して今回のVMODを作ってみました。 ちなみに改行を扱うことについても、インラインCかVMODを使う必要があります。 使い方 import awsrest; backend default { .host = "s3.am

  • VarnishでPOST・COOKIE・GETを扱うためのVMODを作ってみた(vmod-parsereq) – cat /dev/random > /dev/null &

    この前のエントリでPOSTを扱うVMODを作ってみたというのを上げたのですが あの後、使ってくれた人とかからインタフェース変えるとイイヨーイイヨーと言われたので req.http.*に格納するのではなくvmod_curlのように良い感じに使いやすくしてみました。 それだけじゃつまらないということで、おまけでGETとCOOKIEに対応してみました。 今回の特徴は以下です。 ・application/x-www-form-urlencodedとmultipart/form-data両方に対応 ・GET・POST・COOKIEに対応 ・格納されているキーの一覧を取得することができます。 インラインCと併用することですべてのGET・POST・COOKIEのキーに対して特定の値 (攻撃っぽいコードなど)が含まれているかなどのチェックが容易です 使い方はこんな感じです。 たとえばPOSTでhogeとい

    hxmasaki
    hxmasaki 2012/06/11
    やばい!!!
  • Varnish3.0.3-rc1が公開されました – cat /dev/random > /dev/null &

    まだChangelogが出ていないので気づいている範囲での変更点です。 リリースになったらまた書きます。 ドキュメント改善 今まで記述ミスなどがあったのですがかなり書きなおされています。 varnishstatでjson出力オプションの追加 -jでJSON形式で出力します。 新しいパラメータが増えました 通信に関わるパラメータ idle_send_timeout (sec default:60) 送信時にアイドル状態(データの送信ができなくなった)になった場合のタイムアウト時間です 内部での正規表現の呼び出しについての制限 pcre_match_limit (1~UINT_MAX default:10000) 呼び出し回数の制限 pcre_match_limit_recursion (1~UINT_MAX default:10000) 再起回数の制限 パラメータの変更 http_range

  • VarnishでPOSTデータを扱うためのVMODを作ってみた(vmod-parsepost) – cat /dev/random > /dev/null &

    Varnishは基的にPOSTデータを解釈してなにかしらの処理をすることができません。 そこまで不便はないとは思うのですが、たとえば特定のキーワードがPOSTに入ってたら Varnishではじきたいといったことは普通は出来ません。(インジェクションっぽいクエリとか) そのためVarnishでPOSTを手軽に扱うためのVMODを作ってみました。 以下のような特徴・機能があります。 ・application/x-www-form-urlencodedとmultipart/form-data両方に対応 ・パースした値をreq.http.*に格納する ・指定されたヘッダにパースしていない生データを格納可能 ・multipartのデータはurlencodeして格納 ・multipartの生データは(扱いづらいので)application/x-www-form-urlencodedと同じ形式に直して

    hxmasaki
    hxmasaki 2012/06/04
    熱い
  • 同じVCLアクション(vcl_recvなど)を複数定義する – cat /dev/random > /dev/null &

    若干小ネタですが、こんな書き方もできるという例です。 先日のエントリ(Varnishを使う際に覚えておきたいデフォルトの罠)において、 Varnishはユーザの入力したVCLコードの後に、デフォルトのVCLコードを挿入すると紹介しました。 これはユーザーのVCLとデフォルトのVCLの組み合わせですが、 実はユーザのVCLを複数定義して連結することが可能です。 やり方は非常に簡単で、同じアクションを複数定義するだけです。 ■VCL sub vcl_deliver{ set resp.http.a = "a"; } sub vcl_deliver{ set resp.http.a = resp.http.a + "b"; } sub vcl_deliver{ set resp.http.a = resp.http.a + "c"; } ■出力ヘッダ a: abc 上記のVCLは以下のように結合

    hxmasaki
    hxmasaki 2012/05/31
    知らなかった。べんり。
  • How to hook VCL function at VMOD – cat /dev/random > /dev/null &

    VMOD processing want to before/after VCL function processing. But, I do not want to write extra line. How to do it? Can be realized by the replace the pointer to sp->vcl->XXXX_func (VCL_XXXX) Can be added to the processing by replacing pointer static vcl_func_f *vmod_redirect_Hook_vcl_error = NULL; static pthread_mutex_t vmod_redirect_mutex = PTHREAD_MUTEX_INITIALIZER; static unsigned hook_done =

    hxmasaki
    hxmasaki 2012/05/28
    きれい
  • Webサーバ勉強会#5でVarnishではじめるESIって発表してきました – cat /dev/random > /dev/null &

    oranieさんが主催しているWebサーバ勉強会という 全員何かしら発表するという勉強会でESIについて発表してきました。 ESIについては結構前にqpstudyでもLTしているのですが Varnishのバージョンも上がり、いろいろ使いやすくなったので、ここでもう一回とおもいこのテーマで発表しました。 Varnishの利点はやはりその柔軟な設定(VCL)にあると思うので その利点を生かして、単純に静的ファイルをキャッシュさせるだけではなく ESIのように複雑なキャッシュをさせるのもいいんじゃないかなと思っています。 また他の方の発表を聞いてfluentdはやっぱり使いたい!と思った所存です。 JSONにどうしてもなるのかなぁと思っていたのですがrawで収集できるようにしたよ!という発表もあり既存とも組み合わせしやすくこれはいいなと考えています。 Apacheについても2.4.1が出た際に僕

  • Varnishで簡単にリダイレクトができるVMOD作ってみた(vmod_redirect) – cat /dev/random > /dev/null &

    Varnishでリダイレクトを行うのは結構めんどくさいです。 たとえばuser-agentにiphoneかipodを含む場合にそれ用のページにリダイレクトする場合は以下のようになります sub vcl_recv { if (req.http.user-agent ~ "iP(hone|od)") { error 750 "Moved Temporarily"; } } sub vcl_error { if (obj.status == 750) { set obj.http.Location = "http://www.example.com/iphoneversion/"; set obj.status = 302; return(deliver); } } (via:Redirecting using VCL) ただリダイレクトしたいだけなのに二箇所のアクションでコードを書かなくてはい

  • varnishlogを見やすくするツールを作ってみた – cat /dev/random > /dev/null &

    みなさんVarnish使ってますか?僕はよく使ってます。 VCLの動作を調査するときなどによくvarnishlogを使うと思うのですが これが若干わかりづらいと思います。 例えば下はESIを一つ含んだvarnishlogの出力です 13 BackendOpen b default 192.168.1.199 36011 192.168.1.199 81 ★ここでバックエンド開いてる 13 TxRequest b GET 13 TxURL b /test2.html 13 TxProtocol b HTTP/1.1 13 TxHeader b User-Agent: Wget/1.12 (linux-gnu) 13 TxHeader b Accept: */* 13 TxHeader b Host: 192.168.1.199:6081 13 TxHeader b X-Varnish: 17

    hxmasaki
    hxmasaki 2012/01/30
    かっこいい
  • 冬に出したinline-C/VMODガイドブックをPDFで公開しました – cat /dev/random > /dev/null &

    冬コミに出したVarnishのinline-C/VMODガイドブックを公開します。 あんまりVMODって流行ってない気もしますが プライベートポインタ周りがわかるときっと使いたくなるんじゃないかなと思います。 原稿書いてる時にも記事で書いていますが、このはインラインC/VMODとは銘打っているものの Varnishのバージョンが上がったときに、何処が変わったのかすぐ把握したい人にもおすすめです (とおもってます) また、若干飛ばし気味にかいてたり、 varnishtestやsessついてあんま書けなかったり(ごめんなさい)してますが とりあえずVMODが作れるようにはなるんじゃないかと考えています。 夏コミについてはネタがパッと思いつかないのでちょい考え中ですが申し込むかもしれないです。 また、現在あんま進んでいない達人出版会の方の原稿もがんばりますので、そちらも完成したら是非見ていただ

    冬に出したinline-C/VMODガイドブックをPDFで公開しました – cat /dev/random > /dev/null &
    hxmasaki
    hxmasaki 2012/01/26
    ありがたや
  • VarnishCache3.0.2がリリースされました – cat /dev/random > /dev/null &

    VarnishCache3.0.2がリリースされました。 今回はバグ修正がほとんどですが一点言語仕様に変更があります。 Varnish Cache 3.0.2 変更内容 A crasher bug when requests were queued and the backend sent a response with Vary has been fixed リクエストがキューイングされている状態でバックエンドがVaryを返却する場合 内部でVaryの情報がうまく扱えずクラッシュするバグを修正しました。 A crash when a too large synthetic response was produced has been fixed. レスポンスの説明句が長いなどが原因で最終的に返すサイズがhttp_resp_sizeを超えた場合 クラッシュする問題を修正しました。 The

  • 夏に出したVarnishCache入門をPDFで公開しました – cat /dev/random > /dev/null &

    夏コミで同人誌でだしたVarnishCache入門ですがPDFで公開します。 幾つか公開したかった理由はあったのですが、実際コミケまで足を運んで買っていただいた方にちょっと申し訳ないかなと 電子出版での有料配布も考えていたのですが 64P程度で大げさかなというのと、もう一ヶ月経って3.0.1も出たしいいかなと思い公開します。 内容的には初心者向けとなっていますので、そこまで高度な内容については記述していません。 なお3.0.1が公開されたためページ数が変わらない範囲で、その内容についても一部加筆しています。(fallback directorとか) Varnishを使ってみようと考えている方の参考になればと考えています。 PDFのダウンロード ちなみに、時間と印刷費の関係で書ききれなかった事がたくさんあるのですが(転記されないパラメータやら、varnishtestとか・・・) そういうこと

    夏に出したVarnishCache入門をPDFで公開しました – cat /dev/random > /dev/null &
    hxmasaki
    hxmasaki 2011/09/12
    まってました!!