Nginx Web Server Deployment and Configuration Guide

Nginx 概観

高機能なウェブサーバーおよびリバースプロキシソフトウェアとして知られる Nginx は、HTTP プロトコルを中心に、IMAP、POP3、SMTP などのメールプロトコルもサポートしています。低リソース消費による高パフォーマンスが特徴で、大規模トラフィックへの対応に適しています。

インストール手順

公式ウェブサイトから配布されているパッケージまたはバイナリを取得してください。信頼性の高い情報源である組織ドメイン(.org)を使用することが推奨されます。Linux システム上ではパッケージマネージャーを通じて容易に導入できますが、Windows 環境での起動にはいくつかの注意点があります。

インストーラーを実行後、GUI を介して直接アプリケーションを開くと、エラーメッセージを確認できず終了してしまう可能性があります。システム制御権限を持つターミナル(cmd.exe または PowerShell)を使用し、手動でプロセスを開始するのが確実です。

> start nginx.exe

ブラウザ上でローカルホストアドレス(http://127.0.0.1/)にアクセスし、デフォルトの welcome ページが表示されれば正常に稼働しています。もし表示されない場合は、ポート利用状況の確認が必要です。

ポート競合と設定変更

標準的な HTTP ポートである 80 が既に別のサービス(IIS など)によって占有されている場合、Nginx はバインドに失敗します。この状態は以下の出力ログで確認できます。

bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)

既存サービスを停止させるのではなく、Nginx に異なるポート番号を設定する方法が一般的です。nginx.conf ファイル内の server ブロックにある listen ディレクティブを編集し、空いているポート番号を指定します。

http {
    server {
        listen       8000;
        root         /var/www/html;
        
        location / {
            index  index.php index.html;
        }
        
        location /uploads {
            root     /var/www/files;
        }
    }
}

設定ファイルを保存した後、再度サーバーを再起動することで新しいポート(例:8000)へアクセス可能になります。

ディレクトリ構成の基本

静的コンテンツを提供するため、適切なルートディレクトリを準備する必要があります。以下のような階層構造を想定して作成を行います。

  • /data/www: メインの HTML ファイル格納先
  • /data/images: アセット画像用フォルダ

これらのパスは、前述の設定ファイル内でそれぞれ指定したルートに対応付ける必要があります。

管理コマンド

Nginx プロセスを制御するには、シグナル送信用のフラグを使用します。

nginx -s [signal]

使用可能なシグナルは以下の通りです:

  • stop: 即時シャットダウン
  • quit: グレースフルなシャットダウン(既存接続完了待ち)
  • reload: 設定ファイル読み込みのみ再実行(セッション維持)
  • reopen: ログファイルの開放処理

設定変更後に最も効率的かつ安全なのは、プロセスを切ることなく設定を適用する reload です。

リバースプロキシ構成

アプリケーションサーバーやマイクロサービスの背後に Nginx を配置する場合、プロキシ設定が必要です。特定のパスに応答するロジックを定義し、内部サーバーへ転送します。

http {
    # Frontend Server
    server {
        listen 8000;
        root /var/www/public;

        # Application Traffic Forwarding
        location /api {
            proxy_pass http://localhost:9000;
            proxy_set_header Host $host;
        }

        # Static Resource Serving
        location ~* \.(jpg|png|gif)$ {
            root /var/www/assets;
        }
    }

    # Backend Service
    server {
        listen 9000;
        root /var/www/app_server;
    }
}

この構成により、クライアントは 8000 ポートからのアクセスを行い、API リクエストは 9000 ポートで動作するバックエンドサービスへと自動転送されます。必要なヘッダー情報を保持するために proxy_set_header も併記します。

タグ: nginx reverse-proxy http-server web-configuration DevOps

10月16日 01:26 投稿