ブックマーク / qiita.com/cubicdaiya (13)

  • 既存のnginxモジュールを動的モジュール化するための手順 - Qiita

    nginx-1.9.11から動的モジュールの仕組みが導入されたので、自分がメンテしているngx_small_lightやngx_dynamic_upstreamでも動的ローディングに対応してみた。手順は公式のWiki(↓)に綺麗にまとまっており、すんなり対応することができた。 Converting Static Modules to Dynamic Modules 実際に、「Hello, World!」を返すだけの簡単なnginxモジュールを動的モジュール化する手順について紹介してみる。 ngx_http_hello_worldモジュールを動的ロードに対応する ngx_http_hello_worldは単に「Hello, World!」を返すだけのモジュールである。例えば、以下のnginx.confのlocationにアクセスすると「Hello, World!」が返ってくる。

    既存のnginxモジュールを動的モジュール化するための手順 - Qiita
    daiki_17
    daiki_17 2016/02/12
  • slackboard-log〜cronlogライクなSlackboardクライアント〜 - Qiita

    ただ、時々何かの処理に失敗した時だけSlackに通知したいことがある。例えば一日一回圧縮済みのログファイルをGoogle Cloud Storageにアップロードしていて、このタスクが失敗した時だけSlackに通知するケースを考えてみる。 # copy log file to Google Cloud Storage gsutil cp /data/${data_log}_20150505.log.gz gs://${bucket}/ result=`echo $?` if [ $result -ne 0 ]; then echo "@channel: failed to copy log to Google Cloud Storage(${date_log})." | slackboard-cli -s slackboard-host:29800 -t error-gcs exit fi

    slackboard-log〜cronlogライクなSlackboardクライアント〜 - Qiita
    daiki_17
    daiki_17 2016/01/22
  • Slackboard〜Slackプロキシサーバ in Go〜 - Qiita

    昨年末の話だけどSlackへの通知をプロキシするサーバをGoで書きました。如何せん1〜2時間で書いたので一部洗練されてない箇所があるかもしれませんが、 今年のはじめからすでに実運用をはじめています。 Slackboardの役割 SlackboardはSlackへのプロキシサーバであるslackboardとそのためのクライアントであるslackboard-cliの2つから構成されています。↓の図のようにSlackへの通知をクライアントが行うのではなく、クライアントからのリクエストを受け取ったプロキシサーバであるslackboardが行うという仕組みです。 このようにSlackへの通知を直接ではなくプロキシを介して行うのには以下のメリットがあります。 Slackへの通知設定をプロキシサーバで一元管理できる Slackへの通知リクエストをロギングできる 各サーバに散らばったSlackへの通知プロ

    Slackboard〜Slackプロキシサーバ in Go〜 - Qiita
    daiki_17
    daiki_17 2016/01/19
  • nginx-build internals - Qiita

    nginx-buildnginxをビルドするためのコマンドラインツールです。 使い方については過去にQiitaに書いた記事やnginx-buildのREADME.mdにそれなりに詳しく書いてあるのでそちらを参照して下さい。 cubicdaiya/nginx-build/README.md nginx-buildnginxをビルドする nginx-buildnginxにサードパーティモジュールを組み込む nginx-buildnginxの依存ライブラリを静的に組み込む 今回はnginx-buildの内部実装について少し解説します。わりと泥臭いこともやってます。 nginx-buildが行っているのは大きく分けて以下の3つです。 nginxや依存ライブラリ、拡張モジュールのソースコードのダウンロード configureのオプション文字列を自動生成 makeを実行 nginx-build

    nginx-build internals - Qiita
    daiki_17
    daiki_17 2015/12/08
  • 新しい圧縮アルゴリズムBrotliをnginxで試す - Qiita

    BrotliはGoogleが最近公開した新しい圧縮アルゴリズムとその実装です。zopfliと違って従来のよく利用されているdeflateアルゴリズムと互換性はありませんが、deflateアルゴリズムと同じくくらい高速でなおかつ圧縮率がさらに向上しているのが特徴です。 今回はこのBrotliによるコンテンツ圧縮をnginxで利用する方法について紹介します。 ngx_brotli ngx_brotliはngx_http_gzip_moduleおよびngx_http_gzip_static_moduleのbrotli版に相当するnginxモジュールです。以下のようにnginxでgzip圧縮をしたことがある人ならなんとなくどう使うかわかるディレクティブがあります。(ディレクティブはほかにもいろいろとあります。詳しくはngx_brotliのREADME.mdを参照して下さい) ディレクティブ名 値

    新しい圧縮アルゴリズムBrotliをnginxで試す - Qiita
    daiki_17
    daiki_17 2015/12/01
  • nginScriptで遊んでみた - Qiita

    nginxJavaScriptで拡張できるnginScriptがローンチされたので軽く触ってみた。 nginScriptをビルド nginScriptは今のところnginx家のMercurialリポジトリからcloneすることができる。また、nginxモジュールの実装とnginScriptの実装が一緒に含まれているため、まずはnginScriptをビルドする。

    nginScriptで遊んでみた - Qiita
    daiki_17
    daiki_17 2015/09/24
  • ngx_dynamic_upstreamでnginxのアップストリームを動的に変更する - Qiita

    nginxのアップストリームを変更する 通常nginxでアップストリームの変更をするにはnginx.confを変更した後、nginxをreloadないしはrestartしなければなりません。例えば以下のようにアップストリームが定義されている場合、

    ngx_dynamic_upstreamでnginxのアップストリームを動的に変更する - Qiita
    daiki_17
    daiki_17 2015/05/20
  • nginxのパラメータチューニングとh2o - Qiita

    (追記:タイトルが少々煽り気味な気がしたので微妙に変更しました。) h2oとnginxの性能比較 nginxよりも速いとされるh2oですが、実際に自分でもローカルでベンチマークを取ってみました。環境は以下の通りです。 EC2のc4.8xlargeインスタンス gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16) Linux ip-172-31-13-40 3.14.35-28.38.amzn1.x86_64 #1 SMP Wed Mar 11 22:50:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux nginx-1.8.0 h2o-1.2.1-alpha1 wrk(ベンチマーク) ベンチマークコマンド 実行するベンチマークコマンドは以下になります。なお、オプションはできるだけRequest/secが大きくなるように調

    nginxのパラメータチューニングとh2o - Qiita
    daiki_17
    daiki_17 2015/04/26
  • nginxのリクエストボディのバッファリングに関する問題とその改善策 - Qiita

    nginxのデフォルトの動作ではクライアントから受け取ったリクエストボディをメモリにバッファリングするようになっています。 このメモリバッファのサイズはclient_body_buffer_sizeで変更することができ、リクエストボディのサイズがこのバッファのサイズを越えた場合はclient_body_temp_pathにファイルとして書き出されます。 ログレベルがwarn以上の場合はエラーログにa client request body is buffered ...という警告が出ます。 2015/03/29 14:02:20 [warn] 6965#0: *1 a client request body is buffered to a temporary file /etc/nginx/client_body_temp/0000000001, client: x.x.x.x, ser

    nginxのリクエストボディのバッファリングに関する問題とその改善策 - Qiita
    daiki_17
    daiki_17 2015/04/02
  • nginxパフォーマンスチューニング〜静的コンテンツ配信編〜 - Qiita

    今回はHTMLCSSJavascriptといった比較的軽量な静的コンテンツの配信をnginxでやるケースに絞ってチューニングする際のポイントについて紹介しようかと思います。 (注:worker_rlimit_nofileやsysctl.confのネットワーク周りの設定のような定石的なチューニングについてはあえて解説しないのであらかじめご了承ください。) コンテンツをgzip圧縮する 何はともあれgzip圧縮です。ネットワーク帯域に比べればCPUリソースなんて安いものです。 しかし、多くの場合これだけでは十分ではありません。何故ならnginxはデフォルトではContent-Typeがtext/htmlのコンテンツしか圧縮しないためです。圧縮対象のContent-Typeを増やすにはgzip_typesを使います。 単純なWebサイトであれば上記の設定で十分ですが、場合によってはappli

    nginxパフォーマンスチューニング〜静的コンテンツ配信編〜 - Qiita
    daiki_17
    daiki_17 2015/01/03
  • cachectldでOSのページキャッシュ削除を自動化 - Qiita

    サーバを運用していると時々全然メモリが余っているはずなのにスワップが起きてしまうことがあります。この場合よくあるケースは非常に大きなログファイルがあってそのログファイルのために大量のページキャッシュが利用されていることです。 ログファイルなんて滅多に読まないので、そんなのにメモリ使うぐらいだったらもっと別のアプリケーションにちゃんと割り当ててくれよと思うのですが、なかなかうまくいかないものです。 そこで効果的なのがposix_fadivseをラップして指定したファイルのページキャッシュを解放するツールです。 ページキャッシュがどんどん増えている…そんな時に役立つワンライナー ファイル指定で、ページキャッシュにのっているか確認したり追い出したり 私の場合、今まではnocacheというツールをちょこっと改造して使っていましたが、最近もうちょっと便利な風に改造したいと思うようになってきました。例

    cachectldでOSのページキャッシュ削除を自動化 - Qiita
    daiki_17
    daiki_17 2014/12/28
  • ngx_mrubyとngx_lua - Qiita

    今年の秋頃に将来nginxJavaScriptが書けるようになるという話が出ましたが、nginxには元々サードパーティモジュールの中でも有名なngx_luaがあります。また、Advent Calendarを見るにngx_mrubyも盛り上がってきているようです。 そこで両者の比較エントリを書いてみようと思います。 まずngx_mrubyについてはこのカレンダーでさんざん語られてるのでngx_luaについて。 ngx_luaは簡単に言うとngx_mrubyと同じようなこと(あるいはそれ以上のこと)がLuaでできるnginxのサードパーティモジュールです。 例えば「Hello, World!」はこんな感じで書けます。 ngx_luaで利用できるLua処理系 ngx_luaではLua5.1とLua5.1互換のLuaJITが利用できます。逆に言うとLua5.2以上だとビルドできないので注意しまし

    ngx_mrubyとngx_lua - Qiita
    daiki_17
    daiki_17 2014/12/24
  • nginx-buildでnginxをビルドしよう - Qiita

    nginx-buildGoで書かれたnginxをビルドするためのツールです。Goの環境が整っていればgo getでインストールすることができます。 また、Goがインストールされてない環境向けに↓でビルド済みバイナリ(linuxmacの64bit版)を用意しています。 nginx-buildにできること nginx-buildは主にnginxのビルドにまつわる以下のタスクの大部分を自動化します。 nginxのソースコードのダウンロード configureのオプション指定 依存ライブラリ(PCRE、ZLIB、OpenSSL)のダウンロード、組み込み サードパーティーモジュールのダウンロード、組み込み、バージョン管理 筆者は過去にnginxのサードパーティモジュールを開発したり、数十台のnginxサーバを運用していたので、これらのタスクを頻繁に実行していました。しかし、ある時あまりにも面倒に

    nginx-buildでnginxをビルドしよう - Qiita
    daiki_17
    daiki_17 2014/12/01
  • 1