サイトアイコン ITC Media

【初心者向け】Nginxのserver_nameとは?仕組み・設定例を具体的に解説

(最終更新月: 2025年7月15日)

✓当記事はこんな方におすすめです

「nginx server_nameって何?基礎から知りたい」

「複数ドメインの運用やserver_nameの書き分け例が欲しい」

「nginxで自分のウェブサービスを公開したい初心者の方」

✓当記事で理解できること

この記事では、nginx server_nameの役割や考え方から、実際の設定例、トラブルシュートの基礎までわかりやすく解説します。

本当に役立つ実践的なサンプルや失敗例も交えて、未経験の人でも自信を持って設定できることを目指しています。

最後まで一緒に読み進めて、nginxのserver_nameを“自分の力で使いこなす”一歩を踏み出しましょう。

運営者プロフィール

現在はIT企業のプロダクトマネージャーとして、個人向け/社内向けシステムなど、複数のシステム開発・運営に携わっています。

Webサイト構築やECサイトの開発経験に加えて、PythonなどのプログラミングやSalesforceなどのクラウドアプリケーションに関する幅広い知識・経験を活かして「プログラミング初心者がスムーズに学べるサイト」を目指しています。

Githubでは、趣味で作成したアプリなどを公開しています。

https://github.com/Yulikepython/

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

nginxの基礎知識とserver_nameの重要性

このセクションでは、まずnginxそのものの役割と、なぜserver_nameという設定がウェブ運用で必須になるのかを説明します。

nginxを初めて触る方にありがちな疑問や混乱の多くは、「そもそもserver_nameって何?」という根本から始まるからです。

nginxとは何か

nginxは、軽量で超高速なWebサーバーとして世界中で活躍しています。

近年は特にWordPressやReactなどのモダンアプリの公開基盤として採用例が増えました。

例えばApacheと違い、nginxは同時アクセスが多くても安定した応答を維持しやすい特徴があり、初学者にも扱いやすいです。

名前の正しい読み方や、導入のメリットはこちらの解説記事でもまとめていますので、併せてご覧ください。

リクエストの流れとserver_nameの関係

nginxは、インターネットから届いたリクエストの「宛先(Host)」によって、どの設定・どのサイトを表示するかを決めます。

この「宛先」のチェックに使われる最も基本的なものがserver_nameディレクティブです。

例えば同じサーバー内でも “example.com” と “test.com” へのリクエストを見分けて、それぞれ別々のWebページを返します。

この振り分けの仕組みを知っているかどうかで、マルチドメイン運用のトラブルの9割は避けられます。

複数サイト運用でserver_nameが必要になる理由

ビジネスや学習の現場では、1台のサーバーで複数のサービスサイトを運用したい場面がよくあります。

その際にserver_nameが正しく設定されていないと、望まないサイト表示やセキュリティトラブルの原因になりやすいです。

例えば、うっかりdefaultのまま運用してしまい、どのドメインでアクセスしてもサイトAしか表示されないというミスもよく見られます。

初心者の方ほど “server_name” の役割を抑えておけば、このような失敗を事前に防げます。

server_nameディレクティブの基礎と具体的な使い方

このセクションでは、server_nameディレクティブの基本構文と、用途別の書き方を例で解説します。

多くの方が迷うポイントなので、実際のnginx.conf抜粋とともに丁寧に説明します。

server_nameの基本構文

server_nameは、serverディレクティブの中で「このブロックがどのドメイン/IPで反応するか?」を宣言します。

たとえば “example.com” という独自ドメインを設定するなら、次のような記述となります。

server {
    listen 80;
    server_name example.com;
    root /usr/share/nginx/example.com;
    index index.html index.htm;
}

初心者向けにより詳しいnginx.conf全体のイメージは、nginx.confファイルの書き方まとめでも公開しています。

ポイントは「複数サイト=serverブロックを複数作成し、そのserver_nameを書き分ける」というシンプルな分け方です。

複数ドメイン指定やワイルドカード活用

server_nameでは、複数のドメインやサブドメインを“スペース区切り”でまとめて指定できます。

例えば、「example.com」と「www.example.com」を同じサイトに割り当てる場合は次のように記述します。

server {
    listen 80;
    server_name example.com www.example.com;
    # ...
}

ワイルドカード(*.example.com)も利用可能なので、サブドメインを一括で受けたい場合にも有効です。

サブドメインごとの分岐設定や、大量のドメインを一台サーバーで運用したいベンチャー・学習用にも最適な方法です。

未定義ドメインへのアクセス制御

server_nameの設定漏れや類似ドメインへの不正アクセスを防ぐには、“デフォルトブロック”や”server_name _;”を活用します。

例えば、下記のような設定で、未定義のドメインからのリクエストを遮断できます。

server {
    listen 80 default_server;
    server_name _;
    return 444;
}

この「444」はnginx独自の“接続即切断”ステータスなので、意図しないドメイン経由を確実に遮断できます。

セキュリティ観点では、どんなサーバー運用でもこのようなフェイルセーフを入れておくと安心です。

nginx server_nameの実践設定例とさらなる応用

このセクションでは、よりリアルな現場で役立つserver_name設定方法を、サンプルコード付きで解説します。

PHPサイトの例や、名前ベース・IPベースのミックス運用のテクニックなどを押さえれば、応用の幅が一気に広がります。

単純なPHPサイトのserver_name設定例

例えば“example.com”でPHPサイトを動かしたい場合、以下のserverブロックが定番の書き方です。

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com/html;
    index index.php;
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

上記の”fastcgi_pass”のアドレスやrootのパスは、ご自身の環境・Dockerコンテナなどに合わせて調整を忘れずに。

PHPとnginxの連携全体イメージは、運用ガイドUbuntuにNginxを設定しようでもくわしく紹介しています。

名前ベース・IPベース混合の仮想サーバ構成

server_nameは、IPアドレスごとに紐付けて応答を変える”IPベース”との組み合わせも可能です。

例えば、内製システムでは「社内だけは直IP、それ以外はドメイン名でアクセス」のような運用もあります。

server {
    listen 192.168.0.10:80;
    server_name internal.example.com;
    # ...
}
server {
    listen 0.0.0.0:80;
    server_name public.example.com;
    # ...
}

複数のサーバーブロックを活用することで、社内外・異なる用途のユーザーごとにサービスを個別管理できます。

業務システムや開発環境などの切り分けにも重宝します。

実運用で起きやすい失敗と注意点

server_name未設定や記述誤りは、「本番と開発サーバーが混み合う」「予期せずテストドメインが公開される」などの実害につながりやすいです。

とくに注意点は以下の通りです。

思い込みや“前の記述コピペ”で設定がずれていないか、定期的なテストと運用習慣が身を助けます。

server_name設定の確認・トラブル解決のポイント

このセクションでは、作成したserver_name設定が正しく機能しているかをどうテストし、トラブルが起きた時にどこを見直せば良いかをまとめます。

運用経験の浅い方でも理解しやすい具体例を交えます。

設定テストの基本コマンド

設定ファイル編集後は「nginx -t」で必ず文法エラーの有無を確認しましょう。

nginx -t
nginx -s reload

また再読込・再起動の違いについてまとめた解説はNginx再起動ガイドもご活用ください。

“小まめなテスト→都度反映”の習慣で、本番トラブルを未然に防げます。

エラーログの確認方法と具体的なチェックポイント

何か問題が起きた際は「/var/log/nginx/error.log」などのエラーログが強い味方です。

とくに「No matching server」、「host not found」、「permission denied」などの実直なエラー文から、設定ミスを即座に特定できます。

ログファイルの見方やカスタマイズのコツはNginxのログ確認・カスタマイズでさらに深く学べます。

一度は必ず自分の手でログ解析を練習してみましょう。

万一の動作不良時によくある原因パターン

「サーバーにつながらない」「違うサイトが表示された」などの際は、以下3点を確認しましょう。

要点をすばやく整理して見直せば、現場でも慌てず解決できる力が付いてきます。

まとめ

この記事では、nginx server_nameの役割と設定方法について、基礎から実践までを解説しました。

特に重要なのは、「複数サイト運用時には必ず各server_nameを明示的に設定する」、「設定変更後は必ずテスト&reloadを行う」こと、そして「デフォルトで未定義アクセス遮断の保険をかけておく」ことです。

ご自身で学ぶ中でさらに疑問がでたら、locationディレクティブ502エラー解決など、関連まとめ記事も参考にしてみてください。

本格的なウェブ公開やクラウド運用に進む場合は、信頼できるサーバープラットフォームの利用もおすすめです。DigitalOcean公式ページで詳細を確認してみてください。

未経験から本格エンジニアを目指したい方は、現役エンジニアによる学習サポートがあるDMM WEBCAMPもチェックしてみてはいかがでしょう。

モバイルバージョンを終了