← 用語集一覧へ戻る

Nginx

Nginx
高パフォーマンスなWebサーバー・リバースプロキシとして広く使われるオープンソースのソフトウェア。
Nginx (Nginx)

概要(サマリー)

Nginx(読み方:エンジンエックス)は、高速・軽量なWebサーバーソフトウェアである。静的ファイルの配信、リバースプロキシ、ロードバランサーとして幅広い用途に使われており、世界中の多くのWebサービスのインフラを支えている。

サーバー上でアプリを動かすとき、「Nginxを使ってHTTPSで公開する」という構成は非常にポピュラーだ。Dockerと組み合わせた開発環境でも頻繁に登場する存在である。

詳細解説

Nginxとは何か

Nginxは2004年に開発された非同期イベント駆動型のWebサーバーで、大量の同時接続を効率的に処理できるよう設計されている。Apacheの古いprefork構成ではリクエストごとにプロセスを割り当てる考え方が中心だったのに対し、Nginxは少ないリソースで多くのリクエストをさばきやすいことが特徴だ。

Linuxサーバーに設定してHTTPリクエストを処理するのが基本的な使い方である。

NginxをWebサーバーとして使う

NginxはHTTP/HTTPSリクエストを受け取り、静的ファイル(HTMLCSS・画像)を返すWebサーバーとして使える。設定ファイル(nginx.conf)に処理ルールを記述する。

server {
    listen 80;
    server_name example.com;

    location / {
        root /var/www/html;
        index index.html;
    }
}

このシンプルな設定では、ポート番号80でアクセスを受け付けて/var/www/html以下の静的ファイルを返す。

リバースプロキシとして使う

NginxはリバースプロキシとしてNode.jsPythonアプリの前段に置く構成でよく使われる。外部からのリクエストをNginxが受け取り、ポート番号3000などで動くアプリに転送する。

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

このようにすることで、外部にはNginxがフロントに立ち、実際の処理はバックエンドアプリに委ねる構成が実現する。

HTTPSの設定

Let's EncryptなどのSSL/TLS証明書を取得し、NginxでHTTPS通信を設定することが多い。HTTPS(ポート443)でアクセスを受け付け、HTTPでのアクセスはHTTPSに自動リダイレクトする構成が標準的だ。

DockerでのNginx利用

DockerではNginxの公式イメージが提供されており、docker-compose.ymlにNginxのコンテナを定義してフロントエンドビルド結果を配信する、という構成が開発・本番両環境で広く使われている。

ApacheとNginxの違い

NginxとApache(Apacheは.htaccessで有名なWebサーバー)の主な違いは設定方法と処理モデルだ。Apacheはディレクトリ単位の設定ファイル(.htaccess)が使えるが、Nginxは使えない。一方、NginxはApacheより少ないリソースで高い同時接続数を処理できるため、高トラフィックのサービスで選ばれることが多い。

AIコーディングとの関係

AIはNginxの設定ファイル(nginx.conf)の作成を得意としている。「Node.jsアプリをリバースプロキシで公開するNginxの設定を書いて」「Let's EncryptでHTTPS化するNginxの設定例を教えて」といった具体的な要件を伝えることで実用的な設定が得られる。Nginxの設定ミスはサーバー停止につながるため、AIが生成した設定はnginx -tコマンドで構文チェックすることを習慣化しよう。

よくある勘違い

NginxはApacheの置き換え?

NginxとApacheはどちらもWebサーバーだが、「どちらかが正解」ではなく用途や環境によって使い分けられる。Nginxはリバースプロキシや高トラフィックに強く、Apacheは共有サーバー環境での.htaccessによるディレクトリ単位の設定や、長く使われてきた互換性が強みだ。

NginxはLinuxでしか動かない?

NginxはmacOS・Windows・FreeBSDなどさまざまなOSで動作する。ただし本番環境ではLinuxサーバー上での運用が圧倒的に多い。

Nginxを設定するには専門知識が必要?

基本的なリバースプロキシ設定やHTTPS化なら、テンプレートを参考にすれば初心者でも設定できる。ただし、複雑なロードバランシングや最適化は一定の知識が必要だ。AIやドキュメントを活用しながら学ぶのが効率的である。

まとめ

  • NginxはWebサーバー・リバースプロキシ・ロードバランサーとして使われる高性能なソフトウェア
  • Node.js・Pythonなどのアプリの前段に置いてHTTPS化・ポート管理を担う構成が一般的
  • Apacheと異なり.htaccessは使えないが、高い同時接続性能が強み
  • Dockerと組み合わせた使い方も多く、現代のWeb開発インフラの定番ツール
  • 設定ファイルはAIで生成でき、nginx -tでテストするのが安全な進め方

情報ソース

より詳しくAIに聞いてみよう

  • Nginxとは何か、初心者向けにわかりやすく説明してください。
  • NginxとApacheの違いと使い分けを教えてください。
  • Node.jsアプリをNginxのリバースプロキシ経由でHTTPS公開する設定例を教えてください。
  • DockerでNginxを使ってフロントエンドをデプロイする方法を教えてください。
  • AIにNginxの設定ファイルを書いてもらうときの効果的な指示の出し方を教えてください。