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 も併記します。