タグ

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

  • 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と同じ形式に直して

  • 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が出た際に僕

  • 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

  • Varnishの使い方(Using Varnish)を和訳しました – cat /dev/random > /dev/null &

    かなり前から途中まではやっては飽きたりを繰り返していた Varnish公式のWelcome to Varnish’s documentation! の和訳ですが チュートリアルに相当するUsing Varnishのところの和訳が終わってキリがいいのと そういやブログで和訳してるの言ってなかった気がするので報告します。 僕はあまり英語が得意ではないのでエキサイト先生やら辞書引いたりして 涙目で訳していますので間違いがあるかもしれません・・・ もしそういう箇所を見つけたらぜひ教えていただけるとありがたいです。 また新しいほうがいいだろうとtrunkの方を訳していたのですが 将来の記述変更を元にしたところもあるので少し注意が必要です。 (気づいた範囲で注釈はいれています) ★この資料はV2系です★ Varnishドキュメント(和訳) バックエンドサーバの指定(Backend servers) V

  • varnishのインラインCから共有ライブラリを使う方法(cc_command) – cat /dev/random > /dev/null &

    お久しぶりです。 さすがにたまには書かないと忘れ去られそうなのでちょっと小ネタでも VCL中にインラインCで好きな処理を書くことができるのは以前記事でも取り上げましたが 世の中に溢れている様々なライブラリを利用するにはどうすればよいでしょうか? 今回は例としてlibmemcachedを利用して最後にアクセスされたURL(req.url)をmemcacheにストアするVCLを書いてみます。 さてしかし、どうやってlibmemcachedを呼び出せばいいでしょうか? ここで今回の最大のポイントです。 cc_commandという起動パラメータを変更してあげると、共有ライブラリを呼び出すことが可能になります。 cc_commandはvarnishがvclをコンパイルして.soにする際に利用するコマンドになります。 デフォルトのcc_commandは exec cc -fpic -shared -W

  • Varnish2.1.2でESIが使い易くなっていた件について(Varnish2.0.6と比較して) – cat /dev/random > /dev/null &

    以前書いた記事(VarnishでESIを使うときの注意するべき点)で Keep-AliveはOFFにするべき ESI使用時はcontent-lengthがブラウザ側に返却されないようなのでOFFはほぼ必須です どうしても使いたい場合はESIを使用するときのみkeep-aliveをOFFに・・・ と 直Varnishはやめた方がいい Keep-aliveをオフにしても特定のクライアント(ab/wgetなど)で接続が維持されて5秒ほど待ってしまうことがあります つまりKeep-Aliveが有効かつcontent-lengthがないときの挙動と同じになります じゃぁどうすればいいか? 自分はフロントにNginxを置いてそこからVarnishにproxyしています と書きましたがどうやら2.1.X系では改善されたようです ということで比較してみます VCLの設定は両バージョンともこのような感じです

  • nginxでログをrotateしたときに前日の日付にしたい(logrotate) – cat /dev/random > /dev/null &

    nginxでapacheで日付風のログを出力する方法がないかなぁと考えてたのでメモ程度に logrotateを使うしかないのですが dateextオプションをつけるとlogrotateが走った日時の日付になります 結構強引ですがこうすればいけます logrotate用の設定ファイル /var/log/nginx/access_log { dateext rotate 365 missingok postrotate /bin/kill -USR1 `/bin/cat /var/run/nginx.pid 2>/dev/null` 2>/dev/null || true /bin/mv /var/log/nginx/access_log-`date '+%Y%m%d'` /var/log/nginx/access_log.`date '+%Y%m%d' -d '1days ago'` end

    nsyee
    nsyee 2010/06/24
  • 1