【便利】Nginxのserver_nameを設定する方法|実例付

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年9月)

✔当記事は以下の疑問を持つ方々へ向けて作成されました

「nginx server_nameとは何か詳しく知りたい」

「nginx server_nameの設定方法を探している」

「nginx server_nameの具体的な利用例を確認したい」

✔当記事で得られる知識

  • nginx server_nameの基本的な概念
  • nginx server_nameの設定方法と応用例
  • nginx server_nameの使用事例の紹介

当記事では、nginx server_nameの基本から、設定方法、そして実際の応用例までを幅広く解説します。

具体的な事例を通じて、容易に理解できる内容となっています。

ぜひ最後までお付き合いください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

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

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

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

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

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

nginxの基本理解

こちらでは、nginxの基本的な理解と、nginxがリクエストを処理する仕組みをお伝えします。

  • nginxとは?
  • nginxがリクエストを処理する仕組み

nginxとは?

nginxは、高速かつ軽量なWebサーバで、ロードバランサやリバースプロキシとしても使用されるもの。

Apacheなどほかのサーバと比べ、低いリソースで高いパフォーマンスを発揮します。

その特徴から、世界中で広く使用されています。

nginxがリクエストを処理する仕組み

nginxは、リクエストを非同期で処理するため、多くの同時接続に対応できます。

リクエストが来ると、設定に基づきリクエストを適切な場所に振り分ける仕組みです。

この処理の仕組みを理解することで、カスタマイズやトラブルシューティングが容易になります。

server_nameディレクティブの詳細

こちらでは、server_nameディレクティブについての詳細をお伝えします。

Nginxの設定で、重要な項目のひとつです。

  • server_nameとは?
  • 名前ベースの仮想サーバについて
  • サーバ名未定義のリクエスト防止

server_nameとは?

server_nameディレクティブは、ドメイン名やIPアドレスに基づいてリクエストをルーティングする役割です。

nginxの設定で使用されます。

ひとつのサーバで複数のウェブサイトをホストする際などに使われるものです。

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #デフォルトのままなので割愛
}

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

新たなサーバーブロックで、server_name example.comを追加しました。

このあとで確認することは2つ。

  • 所定の場所(/usr/share/nginx/example.com/)にindex.htmlを置く
  • /etc/hosts内でexample.comにアクセスできるよう設定をおこなう

example.comで、所定の場所においたindex.htmlへアクセスできます。

名前ベースの仮想サーバについて

名前ベースの仮想サーバは、ひとつのIPアドレスで複数のドメインを運用する仕組みです。

server_nameディレクティブを使用すると、リクエストのホスト名に基づいて適切なサイトにルーティングできます。

これによって、リソースの効率的な使用が可能です。

サーバ名未定義のリクエスト防止

server_nameディレクティブで、未定義のドメインへのリクエストをブロックできます。

意図しないリクエストを防ぎ、セキュリティを向上させるためです。

以下のようなサーバーブロックをデフォルトで設定しましょう。

# デフォルトのサーバブロック
server {
    listen 80 default_server;
    server_name _;  # 未定義のドメイン名にマッチする
    return 444;    # 444はNginxの特別なステータスコードで、接続を閉じることを意味します。
}

nginx server_nameの設定

こちらでは、nginxのserver_nameの設定方法についてお伝えします。

単純なPHPサイトの設定例も交えて解説していきます。

  • 設定手順の解説
  • 単純なPHPサイト設定の例

設定手順の解説

server_nameの設定は、nginxの設定ファイルでおこないます。

具体的な手順は以下の通りです。

  1. 設定ファイルを開く(/etc/nginx/conf.d/default.conf等)
  2. serverブロック内にserver_nameディレクティブを追加
  3. 必要なドメイン名を設定

このシンプルな手順で、名前ベースの仮想サーバを構築できます。

設定後には、以下で設定ファイルのテストとリロードをおこないましょう。

nginx -t
nginx -s reload

単純なPHPサイト設定の例

PHPサイトの設定も同様に簡単です。

以下はサンプルコードです。

server {
    listen 80;
    server_name example.com;
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        include fastcgi_params;
    }
}

この設定により、example.comドメインでPHPサイトをホストできます。

ミックス型仮想サーバ設定

こちらでは、名前ベースとIPベースのミックス型仮想サーバの設定についてお伝えします。

具体的な設定例も交えて解説します。

  • 名前ベースとIPベースのミックス
  • 具体的設定例

名前ベースとIPベースのミックス

ミックス型仮想サーバ設定では、名前ベースとIPベースの仮想サーバを一緒に使用します。

これによって、さらに柔軟なサイトのホスティングが可能です。

例えば、特定のIPアドレスで特定のドメインだけを処理できます。

具体的設定例

以下は、名前ベースとIPベースのミックス型仮想サーバの設定例です。

server {
    listen 192.168.1.1:80;
    server_name example.com;
    ...
}

server {
    listen 192.168.1.2:80;
    server_name example2.com;
    ...
}

この設定により、異なるIPアドレスで異なるドメインを個別に処理できます。

server_nameの正しさを確認

こちらでは、server_nameの設定の正確さを確認する方法についてお伝えします。

また、問題が発生した際のトラブルシューティングについても触れます。

  • 設定のテスト方法
  • 問題発生時のトラブルシューティング

設定のテスト方法

nginxの設定が正しくおこなわれたか確認するには、コマンドラインでテストコマンドを実行します。

nginx -t

設定にエラーがないか確認できます。

問題発生時のトラブルシューティング

設定に問題が発生した場合、エラーログを確認して問題を特定します。

/var/log/nginx/error.logなどのログファイルにエラー情報が出力されるため、これを解析して修正を行います。

まとめ

当記事では、nginxのserver_nameについてお伝えしました。

server_nameの理解と適切な使用は、効率的で柔軟なWebサーバ運用に不可欠です。

さらに深く学びたい方は、当サイトのNginx記事のまとめからお好きなものをお選びください。

手を動かして学ぶことで、さらなる知識と技術の向上が期待できます。

またいろいろと学びたいのであれば、Dockerコンテナを扱えると、幅が広がるでしょう。

ぜひ試してみてください。

Dockerとは?チュートリアル付きで基礎から使い方まで徹底解説
チュートリアルを通じて、Dockerをマスターしたいですか?当サイトでは、Dockerを触ったことないという方に向けた初期セットアップの方法から、具体的にコンテナ・イメージを作ってみたいという中級者までを対象に多数の記事を用意しています。ぜひご覧ください。
タイトルとURLをコピーしました