読者です 読者をやめる 読者になる 読者になる

インフラSE日記

OSS、仮想化、金融工学、ゲーム、ときどきラーメン

nginxソースコードリーディング ver0.0

HTTPサーバ nginx ソースコードリーディング OSS

nginxとは

C言語で記述されたHTTPサーバです。

nginxの特徴は以下の点。

・処理性能の高さ

・高い並列処理能力

・メモリ使用量の少なさ

・リバースプロキシ機能

・ロードバランサ機能

・HTTPキャッシュ

 

他に有名なHTTPサーバといえばご存知Apache HTTP ServerやMicrosoft IISなどがありますね。

nginxのソースコードを読んでいきたいと思います。

nginxのソースコードリーディングについて書いていた記事がQiitaにあったのですが、

現在更新されていないようです。なら僕が勉強も兼ねて(?)やってみようと思った次第です。そんなソースコードを読む能力なんてないですけどね。まぁ、のび太くんの「上手くなってから練習する」だといつまで経っても伸びないと思うので、アレな感じでもやってみるところから始めていきます。

nginxの設計思想

Igor SysoevがC10問題を解決しようとHTTPサーバを開発したことがきっかけだそうです。Apache HTTPサーバが1つのリクエストに対してプロセスまたはスレッドで処理するのに対して、nginxは非同期のイベント駆動で処理をしています。

 

かっこよく書いたのはいいけど、正直非同期のイベント駆動をよく理解していません。

完全に勉強不足です。

 

nginxのバージョン

ソースコードのバージョンは1.10.0を使います。この記事を書いている時点では最新です。

 

nginxソースコードディレクトリ構成

  • core
    エントリポイント、ハッシュ、配列、バッファ、ログ処理、文字列処理など
  • event
    イベントの処理
  • http
    HTTPリクエスト処理、
  • mail
    メール機能
  • misc
    よくわかりません^^;
  • os
    OSごとのモジュール。現在はunixというディレクトリのみ存在。
  • stream

    ストリーム処理。これもよくわかってry

 

nginxのソースコードリーディングの方針

エントリポイントから読んでいくのか、各ソースコードについて読んでいくのかどっちがいいのだろう……。

とりあえずエントリポイントから読んでいこうと思います。