UbuntuにNginxを設定しよう|複数ドメイン・HTTPS化

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

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

✔以下のような方に向けた記事です

「UbuntuでNginxを操作したいが、どうすればいいかわからない」

「Ubuntuを用いたNginxの設定方法を知りたい」

「具体的なUbuntuでのNginx操作の実例を見て学びたい」

✔当記事で伝えたい内容

  • UbuntuでのNginxの基本的な使い方
  • Nginx設定の書き方及び応用方法
  • Ubuntuを使ったNginx操作の実例

当記事では、UbuntuでNginxを操作する基本的な方法から応用方法まで、実際の操作例を交えて詳細に説明します。

ぜひ最後までお読みください。

筆者プロフィール

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

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

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

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

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

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

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

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

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

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

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

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

UbuntuとNginxの基本

こちらでは、「UbuntuとNginxの基本」についてお伝えしていきます。

  • Ubuntuとは
  • Nginxとは

Ubuntuとは

Ubuntuは、DebianベースのLinuxディストリビューションのひとつ。

以下はUbuntuに関する基本的な情報です。

  1. 発行元
    Canonical Ltd. がサポートします。
  2. リリースサイクル
    2年ごとにLTS(Long Term Support)バージョンをリリースし、LTSバージョンは5年間のサポートが提供されます。その間に、6ヶ月ごとに通常のリリースがおこなわれる。
  3. デスクトップ環境
    デフォルトのデスクトップ環境としては、以前はUnityを使用していましたが、18.04 LTSからはGNOMEが採用されています。
  4. 派生版
    Ubuntuのコードベースを元にした多くの派生版が存在します。Kubuntu(KDEデスクトップ環境)、Xubuntu(XFCEデスクトップ環境)、Lubuntu(LXQtデスクトップ環境)などがあります。
  5. 利用シーン
    Ubuntuはデスクトップ、サーバー、クラウド、IoTデバイスなど、さまざまな用途で使用されています。
  6. 特徴
    利用者が増えている理由のひとつとして、使いやすさ、豊富なソフトウェアのパッケージ、アクティブなコミュニティ、そしてCanonicalのサポートが挙げられます。

Nginxとは

Nginx(エンジンエックス)は、高性能で軽量なWebサーバーやリバースプロキシサーバーなどとして機能するソフトウェア。

以下はNginxに関する基本的な情報です。

  1. 高性能・高並行性
    Nginxは特に多数の同時接続を効率的に処理することを目的として設計されており、少ないリソースで多くのリクエストを処理できます。
  2. リバースプロキシ
    Nginxはリバースプロキシとしてもよく使用されます。クライアントからのリクエストをバックエンドのサーバーに転送し、そのレスポンスをクライアントに返せます。
  3. ロードバランサー
    Nginxはロードバランシングの機能も持っており、入ってくるトラフィックを複数のサーバーに分散可能。
  4. 静的コンテンツの配信
    Nginxは静的ファイルの配信に非常に効率的であり、高速にコンテンツをクライアントに提供できます。
  5. 設定の柔軟性
    Nginxの設定ファイルは非常に柔軟で、多様なニーズに対応するための詳細な設定が可能です。
  6. 拡張性
    モジュールを使用してNginxの機能を拡張できます。多くのサードパーティモジュールが利用可能で、カスタムモジュールの作成も可能です。
  7. セキュリティ
    NginxはセキュアなWebサーバーとして知られており、多くのセキュリティ機能やモジュールが提供されています。

Nginxは、Apache HTTP Serverなどの他のWebサーバーと比較して、特に高トラフィックの状況でのパフォーマンスやリソースの効率性で優れていると広く認識されています。

大規模なWebサイトや高トラフィックのアプリケーションでの使用に特に適しているソフトウェアです。

前提条件: Ubuntuサーバーの準備

こちらでは、「Ubuntuサーバーの準備」についてお伝えしていきます。

  • 必要なハードウェアとソフトウェアの要件
  • UbuntuとNginxの準備が出来たかチェック

必要なハードウェアとソフトウェアの要件

UbuntuとNginxでは、とくに最低限必要なスペックは明示されていません。

用途によって、必要なスペックは大きく異なるからです。

最低限のものとして、以下がおすすめです。

  • CPU:1GHz以上
  • RAM:512MB以上
  • ディスク容量:2.5GB以上
  • Ubuntu:LTSでサポート期限が切れていないもの

こちらは最低限の用途で使うもの。

より早く、たくさん、使いたいのであれば、サーバーのスペックも高くする必要があります。

UbuntuとNginxの準備が出来たかチェック

インストール後、システムの更新や必要な依存関係のインストールが完了したら、以下のコマンドでバージョンが表示されるかを確認してください。

$ nginx -v
nginx version: nginx/1.25.2

NginxをUbuntuに導入するステップ

こちらでは、「UbuntuにNginxを導入するステップ」についてお伝えしていきます。

  • Nginxのインストール
  • ファイアウォールの設定
  • Webサーバーの動作確認
  • Nginxプロセスの管理
  • 設定ファイルの確認

Nginxのインストール

UbuntuでのNginxのインストールは非常に簡単。

sudo apt update
sudo apt install nginx

インストール後は、バージョンが確認できたら、以下のコマンドでサービスを起動します。

sudo systemctl start nginx

ファイアウォールの設定

安全な運用のために、UFWファイアウォールを設定し、必要なポートだけを開放しましょう。

通常、HTTPは80番ポート、HTTPSは443番ポートを開放します。

sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 22 #SSH接続をしているなら22も忘れずに
sudo ufw enable

Webサーバーの動作確認

ブラウザでサーバーにアクセスし、Nginxのデフォルトページが表示されることで動作確認ができます。

http://サーバーのIPアドレス

Nginxプロセスの管理

Nginxのプロセスをsudo systemctlコマンドを使用して管理する場合、以下のコマンドを使用できます。

1.Nginxを起動する

sudo systemctl start nginx

2.Nginxを停止する

sudo systemctl stop nginx

3.Nginxを再起動する

sudo systemctl restart nginx

4.Nginxの状態を確認する

sudo systemctl status nginx

5.Nginxを再読み込みする (設定変更後など)

sudo systemctl reload nginx

6.Nginxの自動起動設定を有効にする

システム起動時に自動的にNginxを起動するように設定します。

sudo systemctl enable nginx

7.Nginxの自動起動設定を無効にする

sudo systemctl disable nginx

これらのコマンドを使用することで、Nginxのサービスの管理や状態の確認がおこなえます。

設定ファイルの確認

Nginxの設定は、以下のどちらかでおこないます。

  • /etc/nginx/nginx.conf:大元のファイル
  • /etc/nginx/conf.d/default.conf等:大元から分割されたファイル

何を変更したいかで、編集すべき設定ファイルが変わってきます。

Webページ公開とサーバーブロック

こちらでは、「Webページの公開とサーバーブロックの設定」についてお伝えしていきます。

  • サーバーブロックとそのセットアップ
  • Webページの公開方法

サーバーブロックとそのセットアップ

サーバーブロックは、バーチャルホストを設定するNginxの機能です。

異なるドメインやサブドメインで異なるWebページを扱えます。

server {
    listen       80;
    listen  [::]:80;
    server_name  example.com;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

Webページの公開方法

公開したいWebページを適切なディレクトリに配置。

Nginxの設定ファイルでそのディレクトリを指定することで公開します。

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

反映にはNginxの再起動が必要です。

nginx -t
nginx -s reload

マルチドメインとバーチャルホスト

こちらでは、「マルチドメインとバーチャルホストの設定」についてお伝えしていきます。

  • 各ドメインのドキュメントルートディレクトリ作成
  • バーチャルホストの設定方法
  • 設定ファイルの確認とリロード

各ドメインのドキュメントルートディレクトリ作成

複数のドメインを管理するためには、それぞれのドメインごとにドキュメントルートディレクトリを作成します。

各ドメインが参照するドキュメントを分け、異なる内容を表示できます。

    location / {
        root   /usr/share/nginx/html; ##ここを変更。
        index  index.html index.htm;
    }

バーチャルホストの設定方法

Nginxの設定ファイルで、それぞれのドメインに対応するサーバーブロックを定義し、バーチャルホストを設定します。

server {
    listen       80;
    listen  [::]:80;
    server_name  example.com;

    #必要な設定を書く
}

server {
    listen 80;
    server_name example01.com

  #必要な設定を書く
}

server_nameについて理解すると、設定がスムーズです。

設定ファイルの確認とリロード

同じ設定ファイル内にサーバーブロックの記載もできますが、conf.dディレクトリに別ファイルとして分けることも可能。

例えば以下のようなフォルダツリーでご説明を進めます。

.
|-- conf.d # ここにサーバーブロックを定義した設定ファイルを入れる
|   |-- default.conf
|   `-- myoriginal.conf #これが新しく作った設定ファイル
|-- nginx.conf #ここがhttpブロックから書かれた大元のファイル
|-- #ほかにもファイルはいろいろとあります。デフォルトのまま

conf.d内に、新たな設定ファイルを作っても、とくにリンクなどを指定する必要はありません。

なぜなら大元のnginx.confで、conf.d内の.confファイルをすべて見るよう記されているからです。

include /etc/nginx/conf.d/*.conf;

ただし設定ファイルの記述が正しいかと、ngixnのリロードを実行する必要はあります。

nginx -t
nginx -s reload

HTTPS対応ステップ

こちらでは、「HTTPS対応のステップ」についてお伝えしていきます。

  • Certbotパッケージのインストール
  • HTTPSアクセスの確認方法
  • サーバ証明書の自動更新テスト

Certbotパッケージのインストール

HTTPSを設定するためにはSSL証明書が必要です。

Certbotは、無料のSSL証明書を提供するLet’s Encryptと連携しています。

sudo apt install certbot python3-certbot-nginx

必要なプラグインも含めてインストールできたら、以下で設定に進みましょう。

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

エラーなくできれば完成です。

HTTPSアクセスの確認方法

証明書の取得と設定後、ブラウザでhttps://サーバーのIPアドレスにアクセスして、正しくHTTPSが動作しているかを確認します。

サーバ証明書の自動更新テスト

Let’s Encryptは90日で更新します。

以下のコマンドを定期的にうつか、cronジョブで設定しましょう。

sudo certbot renew --dry-run

まとめ:UbuntuとNginxの活用方法

当記事では、Ubuntu環境でのNginxの設定と運用について学習してきました。

Webサーバーの運用は奥が深いです。

今後も学び続け、試行錯誤しながらスキルを高めていってください。

タイトルとURLをコピーしました