Nginx的配置

Nginx(エンジンエックス)は、高性能で高い拡張性を誇るWebサーバおよびリバースプロキシサーバです。Nginxの設定は通常、設定ファイル(nginx.conf)で行います。ここでは、Nginxの基本的な設定方法と重要なディレクティブについて説明します。

1. 基本的な設定ファイルの構成

Nginxの設定ファイルは通常、以下のディレクトリに格納されています。

  • /etc/nginx/nginx.conf(メイン設定ファイル)
  • /etc/nginx/conf.d/(追加設定ファイル)
  • /etc/nginx/sites-available/(仮想ホスト設定)
  • /etc/nginx/sites-enabled/(有効化された仮想ホスト設定)

nginx.conf の基本構成

# 最上部に書く
user nginx;  # サーバプロセスを実行するユーザー
worker_processes 1;  # 使用するワーカープロセス数(通常はCPUコア数に合わせる)
pid /var/run/nginx.pid;  # PIDファイルの保存先

# グローバルなエラーログの設定
error_log /var/log/nginx/error.log warn;
# ログ形式の設定
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;

# どのポートで接続を待つかを指定(通常は80や443)
http {
    include       /etc/nginx/mime.types;  # コンテンツタイプの設定
    default_type  application/octet-stream;

    # ディレクトリを設定
    access_log /var/log/nginx/access.log;
    sendfile on;  # 高速転送を有効にする
    tcp_nopush on;
    tcp_nodelay on;

    # 終了後の待機時間など
    keepalive_timeout 65;
    types_hash_max_size 2048;

    # ここで仮想ホストを設定する(http{}内)
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

2. 仮想ホストの設定

Nginxでは、仮想ホストを設定することで、異なるドメインやパスに基づいて異なる設定を適用できます。通常、/etc/nginx/sites-available/に設定ファイルを置き、/etc/nginx/sites-enabled/にシンボリックリンクを作成することで、仮想ホストを有効にします。

サンプル:単一ドメインの設定

例えば、example.comというドメインをホストする設定は以下のようになります:

server {
    listen 80;
    server_name example.com www.example.com;  # ホストするドメイン名

    # ルートディレクトリを指定
    root /var/www/example.com/html;

    index index.html index.htm;  # デフォルトで表示するファイル

    # エラーページ設定
    error_page 404 /404.html;
    location = /404.html {
        root /usr/share/nginx/html;
    }

    # サーバエラーログとアクセスログを指定
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    # メインのURLルーティング
    location / {
        try_files $uri $uri/ =404;
    }

    # 他の設定(静的ファイルやリダイレクトなど)
}

この設定では、example.comへのアクセスを受け、/var/www/example.com/htmlフォルダ内のファイルを配信するように指示しています。

サンプル:SSL(HTTPS)設定

SSL(HTTPS)接続を有効にするには、まずSSL証明書を取得してサーバに配置し、次のように設定します:

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    # SSL設定
    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;

    # SSL関連の設定(セキュリティ強化のため)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:...';
    ssl_prefer_server_ciphers on;

    root /var/www/example.com/html;
    index index.html index.htm;

    # ログとエラーページの設定
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;
    
    location / {
        try_files $uri $uri/ =404;
    }
}

# HTTPからHTTPSへのリダイレクト
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

この設定では、443番ポートでSSL接続を受け入れ、HTTP(80番)からHTTPS(443番)へのリダイレクトを行っています。

3. プロキシ設定(リバースプロキシ)

Nginxはリバースプロキシサーバとしても使用できます。例えば、アプリケーションサーバ(Node.jsやPHP-FPMなど)との接続をNginxが仲介することができます。

サンプル:リバースプロキシ

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://localhost:3000;  # アプリケーションサーバ(例:Node.js)が3000番ポートで待機
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

この例では、Nginxがポート80でリクエストを受け、そのリクエストをローカルホストのポート3000番で待機しているアプリケーションサーバに転送しています。

4. 静的ファイルの配信

Nginxは非常に高速な静的ファイルサーバとして動作します。例えば、HTMLファイルや画像ファイル、CSS、JavaScriptなどを配信する場合、次のように設定します。

server {
    listen 80;
    server_name example.com;

    root /var/www/example.com/html;  # 静的ファイルのディレクトリ

    location / {
        try_files $uri $uri/ =404;  # リクエストされたファイルが存在しない場合は404エラー
    }

    # 特定のディレクトリや拡張子の設定(例えば、画像やCSSなど)
    location ~* \.(jpg|jpeg|png|gif|css|js)$ {
        expires 30d;  # これらのファイルを30日間キャッシュする
    }
}

5. キャッシュの設定

Nginxでは、静的ファイルのキャッシュを設定することで、パフォーマンスを向上させることができます。例えば、以下のようにexpiresディレクティブを使ってキャッシュの有効期限を設定できます。

location /images/ {
    root /var/www/example.com;
    expires 1y;  # 画像は1年間キャッシュ
}

6. エラーページのカスタマイズ

Nginxでは、特定のエラーコードに対してカスタムエラーページを設定することができます。例えば、404エラーのページをカスタマイズする場合、次のように設定します。

server {
    listen 80;
    server_name example.com;

    error_page 404 /404.html;  # 404エラー時に表示するページ
    location = /404.html {
        root /usr/share/nginx/html;
    }

    location / {
        try_files $uri $uri/ =404;
    }
}

7. Nginxの設定テストと再起動

設定を変更した後、設定にエラーがないかを確認するために、Nginxの設定テストを実行します。

sudo nginx -t  # 設定ファイルのテスト

エラーがない場合、Nginxを再起動して変更を反映します。

sudo systemctl restart nginx  # サービスの再起動

まとめ

Nginxの設定は非常に柔軟で強力です。基本的なサーバの設定からリバースプロ

Review after registration

login page

  • Modesto Botsford III 🍊 2个月前
    🍊🍊🍊🍊🍊🍊🍊🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎

  • Mrs. Laurie Hayes 🍊 2个月前
    🍊🍊🍊🍊🍊🍊🍊🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎

  • Sydnie Wiegand 🍊 2个月前
    🍊🍊🍊🍊🍊🍊🍊🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎

  • Ms. Jayda Kuvalis DVM 🍊 2个月前
    🍊🍊🍊🍊🍊🍊🍊🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎

  • Summer 🍊 2个月前
    🍊🍊🍊🍊🍊🍊🍊🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎