概要
- nginx(エンジンエックス) = Apacheなどと同様のWebサーバ
- フリーかつオープンソース(BSD。ただし企業主導で開発している)
- 実装はCで、マルチプラットフォーム対応
- C10Kが問題視された頃から、高速処理できるサーバとして着目された
特徴
フル機能のHTTPサーバ
- ロギング, 仮想サーバ, SSL, rewrite, アクセスコントロール, KeepAlive, HTTP/2などはデフォルトで使える
- Apacheと同様に、モジュールにより拡張可能
イベント駆動方式
- 単一のプロセスがリクエストをどんどこ捌いていくイメージ
- Apacheのように、リクエストに対してプロセスあるいはスレッドの割当が不要なので高速、省メモリ
- ただしメモリ空間は全リクエスト共有になるため、それに関連してアプリケーションサーバとしての利用に制限がある
- シングルプロセスなので、ひとつの処理に時間がかかると他のレスポンスに影響する
リバースプロキシ(キャッシュサーバ)として利用可能
- SSLアクセラレータ、ロードバランサとしても動作する
- SMTPなどHTTP以外のプロトコルのロードバランスも可能
アプリケーションサーバとしては動作__しない__
- Webアプリをnginxが直接動かすことはできない
- その場合は別途Appサーバを別途用意し、nginxはそのリバースプロキシとして振舞う
- AppサーバとnginxはFastCGIやPassengerで接続される
その他
-
nginx-biuld
という専用のビルドツールがあり、依存性解決やバージョン管理が容易 - 設定変更時に再起動不要
導入方法
インストール
パッケージマネージャでインストールできる
OSX
$ brew install nginx
RH系Linux
$ sudo yum install nginx
基本コマンド
# 起動
$ nginx
# 停止
$ nginx -s stop
# 設定の再読み込み
$ nginx -s reload
# 設定ファイルのテスト
$ nginx -t
設定
-
brewでOSXにインストールした場合、設定ファイルは
/usr/local/etc/nginx/
にあった -
設定ファイルは復数あるが、基本的には
nginx.conf
をいじればよさそうfile desc nginx.conf Nginx全般の設定 mime.types MIMEタイプと拡張子の関連 fastcgi_params FastCGI設定 scgi_params SCGI設定 uwsgi_params uWSGI設定 -
設定ファイルの基本構文は簡単そう
- コメントは
#
- ディレクティブは
ディレクティブ名 { ... }
- 各プロパティは
プロパティ 値 ;
- コメントは
参考
概要/比較
- Wikipedia - nginx
- Qiita - Apacheとnginxどちらを採用すべきかメリット・デメリット比較
- Qiita - apacheとnginxの比較表とベンチマーク
- 金沢ではたらく新米エンジニアの日記 nginxってよく聞くけどApacheとどう違うかよくわからないので調べてみる。
- @IT - これから始める人のためのNginx