2026年11月4日

2026年11月4日

Nginxのバーチャルホストでデフォルトサーバーを設定する方法

ステップ1: Nginxのバーチャルホストでデフォルトサーバーを設定する

Nginxを使用したウェブサイト運営において、通常は特定のドメイン名に対してバーチャルホストを設定します。しかし、もし該当するドメインが見つからない場合や、無効なURLが入力された場合などに、デフォルトのウェブページを表示することが求められることがあります。

この記事では、Nginxのバーチャルホスト設定でデフォルトサーバーを設定する方法と注意点について解説します。適切にデフォルトサーバーを設定することで、ユーザーが意図せずにアクセスした場合でもサイト全体の外観や機能が損なわれることなく、適切なエラーページやメッセージを表示できます。

ステップ2: デフォルトサーバーの設定

ステップ2-1: default_serverオプションを使用した設定

最初に、/etc/nginx/nginx.confファイルまたはバーチャルホストファイルでデフォルトサーバーを設定します。以下は、基本的な設定方法です。

# /etc/nginx/nginx.conf ファイルの http 値内に default_server オプションを使用する例
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    # ステップ2-1
    server {
        listen       80;
        server_name  _;  # デフォルトサーバーを指定
        root         /var/www/html;
        index        index.html index.htm;

        error_page   404 = /404.html;
        location = /404.html {
            internal;
        }
    }

    server {
        listen       80;
        server_name  example.com www.example.com;
        root         /var/www/example.com;
        # ... パスと設定
    }
}

ステップ2-2: エラーページを設定する

デフォルトサーバーが見つからない場合に表示されるエラーページを設定します。以下は、404エラーに対する対応例です。

# /etc/nginx/nginx.conf ファイルの http 値内に error_page オプションを使用する例
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    # ステップ2-2
    server {
        listen       80;
        server_name  _;  # デフォルトサーバーを指定
        root         /var/www/html;
        index        index.html index.htm;

        error_page   404 = /404.html;
        location = /404.html {
            internal;
        }
    }

    server {
        listen       80;
        server_name  example.com www.example.com;
        root         /var/www/example.com;
        # ... パスと設定
    }
}

ステップ3: 設定変更後のNginx再読み込み

デフォルトサーバーの設定を完了した後、以下のコマンドを使用してNginxを再読み込みします。

# Nginx コマンドを実行する例
sudo nginx -t  # ファイル構造の検証
sudo systemctl reload nginx  # 設定変更後の再読み込み

ステップ4: 確認とトラブルシュート

デフォルトサーバーが正しく設定されたか、確認するために、非存在のドメイン名や無効なURLを試してみます。以下は、その確認方法です。

# curl コマンドを使用して確認する例
curl http://nonexistent.example.com  # 404 エラーが表示されるはず

注意事項

  • セキュリティ上の注意: デフォルトサーバーは一般的に無効なURLに対してエラーページを提供しますが、過度の情報公開や脆弱性を抱える可能性があります。適切なエラーメッセージとフィルタリングを行うことが推奨されます。
  • パフォーマンス/運用上の注意: デフォルトサーバー設定は通常、ウェブサイト全体のパフォーマンスに大きな影響を与えることはありません。しかし、大量のアクセスが予想される場合は、適切な負荷分散やリダイレクト設定を考慮する必要があります。

まとめ

1. デフォルトサーバーの設定: serverブロック内でserver_name _;を使用します。

2. エラーページの指定: error_pageオプションを使って適切なエラーページを定義します。

3. Nginx再読み込み: 修正後はnginx -tコマンドでテストし、正しく設定されていることを確認します。

4. 確認方法: 無効なURLや非存在のドメイン名に対してアクセスして、エラーページが適切に表示されるか確認します。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲