Nginxの基本概念と実践的設定ガイド

Nginxの概要

Nginxはオープンソースの高性能Webサーバーおよびリバースプロキシサーバーです。ホットデプロイメントをサポートし、数ヶ月間の連続稼働が可能で、サービスを停止せずにソフトウェアの更新が行えます。メモリ使用量が少なく、高い同時接続処理能力(最大5万接続)を誇り、無料で商用利用可能です。

主な特徴

  • 高い並列処理性能と応答速度
  • モジュール型アーキテクチャによる優れた拡張性
  • Node.jsと同様の非同期イベント駆動モデル
  • 長期安定稼働による信頼性の高さ
  • ホットデプロイメントとスムーズなアップグレード
  • 活発なオープンソースエコシステム

主な用途

  1. 静的リソースの配信(ローカルファイルシステム経由)
  2. リバースプロキシサービス(キャッシュ、負荷分散を含む)
  3. APIサービス(OpenRestyを使用)

インストール方法(CentOS 7)

yum install nginx -y

基本操作コマンド

systemctlコマンド

systemctl enable nginx    # 自動起動有効化
systemctl start nginx     # サービス開始
systemctl stop nginx      # サービス停止
systemctl restart nginx   # サービス再起動
systemctl reload nginx    # 設定再読み込み

Nginx実行コマンド

nginx -s reload    # 設定再読み込み(ホットリスタート)
nginx -s stop      # 即時終了
nginx -s quit      # 処理完了後終了
nginx -t           # 設定ファイル検証

設定ファイル構造

# グローバル設定
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;

# イベント設定
events {
    use epoll;
    worker_connections 1024;
}

# HTTP設定
http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    
    # サーバー設定
    server {
        listen 80;
        server_name localhost;
        
        # ロケーション設定
        location / {
            root /usr/share/nginx/html;
            index index.html;
        }
    }
}

リバースプロキシ設定例

upstream backend_servers {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}

server {
    listen 80;
    server_name proxy.example.com;
    
    location / {
        proxy_pass http://backend_servers;
    }
}

負荷分散戦略

ラウンドロビン(デフォルト)

upstream backend {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}

IPハッシュ

upstream backend {
    ip_hash;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}

最少接続数

upstream backend {
    least_conn;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}

HTTPS設定

server {
    listen 443 ssl;
    server_name secure.example.com;
    
    ssl_certificate /path/to/cert.crt;
    ssl_certificate_key /path/to/key.key;
    
    location / {
        root /var/www/html;
        index index.html;
    }
}

Gzip圧縮設定

gzip on;
gzip_types text/plain text/css application/json;
gzip_comp_level 6;
gzip_min_length 1024;

キャッシュ設定

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;

server {
    location / {
        proxy_cache my_cache;
        proxy_cache_valid 200 302 10m;
        proxy_cache_key "$scheme$request_method$host$request_uri";
    }
}

タグ: nginx Webサーバー リバースプロキシ 負荷分散 HTTPS

8月18日 14:12 投稿