Nginxは、高性能で軽量なWebサーバーおよびリバースプロキシサーバーとして広く使用されています。その柔軟性と効率性により、特にトラフィックの多いウェブサイトやアプリケーションで好まれています。本記事では、Nginxをサーバーにインストールし、設定する方法を詳細に解説します。初心者から上級者まで、Nginxを効果的に利用するための手順とポイントを押さえていきます。
1. Nginxのインストール
まず、Nginxをインストールする方法から始めます。インストールは主にLinuxディストリビューションによって異なりますが、ここではUbuntuを例に説明します。
Ubuntuの場合
-
パッケージリストの更新
bashsudo apt update
-
Nginxのインストール
bashsudo apt install nginx
-
インストールの確認
Nginxが正しくインストールされたかどうかを確認するため、次のコマンドでNginxのバージョンをチェックします。
bashnginx -v
-
Nginxの起動と有効化
インストールが完了したら、Nginxを起動します。
bashsudo systemctl start nginx
Nginxをシステム起動時に自動的に開始するよう設定するには、次のコマンドを実行します。
bashsudo systemctl enable nginx
-
ファイアウォールの設定
Nginxがファイアウォールでブロックされている場合、HTTPとHTTPSトラフィックを許可するために次のコマンドを実行します。
bashsudo ufw allow 'Nginx Full'
これで、Nginxはサーバー上で稼働する準備が整いました。ブラウザでサーバーのIPアドレスを入力することで、Nginxのウェルカムページを確認できます。
2. Nginxの設定
Nginxの設定は、主に/etc/nginx/nginx.conf
や/etc/nginx/sites-available/
ディレクトリ内の設定ファイルで行います。ここでは、基本的な設定方法について説明します。
2.1 基本的な設定ファイルの場所
- nginx.conf: メインの設定ファイルです。
- default.conf: 通常のサイト設定を行うファイルです。
/etc/nginx/sites-available/
に配置されます。
2.2 サーバーブロック(仮想ホスト)の設定
Nginxでは、仮想ホスト(サーバーブロック)を使って、複数のドメインを1台のサーバーで管理できます。例えば、example.com
とexample.org
という2つのドメインを設定したい場合、以下の手順で行います。
-
新しいサーバーブロックファイルの作成
/etc/nginx/sites-available/
ディレクトリに新しい設定ファイルを作成します。bashsudo nano /etc/nginx/sites-available/example.com
-
サーバーブロックの設定
作成したファイルに以下の内容を記述します。
nginxserver { listen 80; server_name example.com www.example.com; root /var/www/example.com/html; index index.html; location / { try_files $uri $uri/ =404; } }
-
シンボリックリンクの作成
新しいサーバーブロックを
sites-enabled
ディレクトリにシンボリックリンクとして有効化します。bashsudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
-
Nginxの設定のテストと再起動
設定ファイルにエラーがないかテストします。
bashsudo nginx -t
エラーがなければ、Nginxを再起動して設定を反映させます。
bashsudo systemctl restart nginx
これで、example.com
にアクセスすると、指定したディレクトリ内のコンテンツが表示されるようになります。
3. SSLの設定
セキュアな接続(HTTPS)を提供するために、SSL証明書を設定することが重要です。ここでは、Let’s Encryptを使用して無料のSSL証明書を取得し、Nginxに設定する方法を説明します。
3.1 Certbotのインストール
Let’s EncryptのSSL証明書を取得するために、Certbotというツールをインストールします。
bashsudo apt install certbot python3-certbot-nginx
3.2 SSL証明書の取得
Certbotを使って、Nginx用のSSL証明書を取得します。
bashsudo certbot --nginx -d example.com -d www.example.com
このコマンドで、SSL証明書が自動的に取得され、Nginxの設定に組み込まれます。
3.3 証明書の自動更新設定
Let’s Encryptの証明書は90日ごとに更新する必要があります。Certbotには自動更新機能があり、cronジョブとして設定できます。
bashsudo systemctl enable certbot.timer
これで、SSL証明書が自動的に更新されます。
4. 高度な設定
Nginxは非常に柔軟で、詳細な設定を行うことができます。以下は、高度な設定の一部です。
4.1 リバースプロキシの設定
Nginxをリバースプロキシとして設定することも可能です。例えば、バックエンドのアプリケーションが別のポートで動作している場合、Nginxがそのリクエストを処理してバックエンドに転送することができます。
nginxserver {
listen 80;
server_name example.com;