Nginx(発音: エンジンエックス)は、高性能でスケーラブルなオープンソースのWebサーバーおよびリバースプロキシサーバーです。また、ロードバランサーやメールプロキシとしても利用されます。
2004年にロシアのエンジニアであるIgor Sysoevによって開発され、現在はF5, Inc.によって管理されています。
主な特徴
- 高パフォーマンス:
- イベント駆動型アーキテクチャを採用しており、リクエスト処理が効率的。
- 多数のリクエストを非同期に処理可能で、低リソースで動作します。
- 高トラフィックなWebサイト(例: YouTube、Netflix、Instagram)でも使用される。
- リバースプロキシ:
- クライアントからのリクエストを受け取り、バックエンドサーバーに転送。
- 負荷分散やSSLの終端処理を担当。
- 静的ファイル(画像やCSS)をキャッシュして高速化。
- ロードバランサー:
- リクエストを複数のバックエンドサーバーに分散することで、システム全体の負荷を均一化。
- ラウンドロビン、IPハッシュ、最小接続数などの負荷分散アルゴリズムをサポート。
- 静的コンテンツ配信:
- HTML、CSS、JavaScript、画像などの静的ファイルを高速に配信。
- モジュール構造:
- 必要な機能をモジュールとして組み込むことで、柔軟な構成が可能。
- セキュリティ:
- SSL/TLSのサポート(HTTPS)。
- DDoS攻撃や不正なリクエストに対する防御策を提供。
主な用途
- Webサーバー:
- 静的/動的コンテンツの配信。
- Webアプリケーションのフロントエンド。
- リバースプロキシ:
- クライアントからのリクエストをバックエンドに転送し、負荷を分散。
- バックエンドサーバーのIPを隠す。
- ロードバランサー:
- リクエストを複数のサーバーに分散して効率化。
- 高可用性の実現。
- メールプロキシ:
- IMAP、POP3、SMTPプロトコルをサポート。
Nginxの主な設定ファイル
Nginxの設定は、通常以下のファイルで行います。
nginx.conf
:- Nginx全体の設定ファイル。
sites-available
とsites-enabled
:- サイトごとの設定を分離管理するディレクトリ。
- シンボリックリンクを利用して有効化。
基本的な構造例
nginxコード
http {
server {
listen 80; # ポート80でリッスン
server_name example.com; # ドメイン名
location / {
root /var/www/html; # ドキュメントルート
index index.html; # デフォルトのファイル
}
location /api/ {
proxy_pass http://backend-server; # バックエンドにリクエストを転送
}
}
}
NginxとApacheの違い
特徴 | Nginx | Apache |
---|---|---|
アーキテクチャ | イベント駆動型 | プロセス/スレッド駆動型 |
パフォーマンス | 高トラフィックに対応 | 小規模サイトに適している |
柔軟性 | 静的コンテンツの配信が得意 | .htaccessでの設定が容易 |
用途 | 高トラフィックのサイト、リバースプロキシ | 汎用的なWebサーバー |
Nginxを選ぶ理由
- 高トラフィックを処理できる。
- 軽量でリソース消費が少ない。
- 静的コンテンツの高速配信が得意。
- 負荷分散やプロキシ機能が優れている。
Webサーバーとして、またプロキシやロードバランサーとして広く利用されており、特にスケーラビリティとパフォーマンスを重視する環境で人気があります。
コメント