目次
序章
Nginxは、メモリ使用量が少なく、同時処理能力が高く、軽量であるという特徴を持ち、インターネットで広く使用されている高性能なWebサーバーソフトウェアです。このチュートリアルでは、Nginx を使用して、単純な HTML ベースの個人用 Web サイトを構築します。
環境整備
このチュートリアルを開始する前に、次のソフトウェアがインストールされていることを確認してください。
ニンクス
テキスト エディター (例: Notepad++、Sublime Text、Atom など)
また、コマンド ラインで必要なことを実行できるように、Linux の基本的な操作とコマンドについても知っておく必要があります。
ステップ 1: Nginx をインストールする
Ubuntu システムでは、次のコマンドを使用して Nginx をインストールできます。
sudo apt update
sudo apt install nginx
インストールが完了したら、次のコマンドを使用して、Nginx が正常にインストールされたかどうかを確認できます。
nginx -v
インストールが成功すると、Nginx のバージョン情報が表示されます。
ステップ 2: Nginx を構成する
Nginx の構成ファイルは /etc/nginx/nginx.conf にあり、任意のテキスト エディターで編集できます。このチュートリアルでは、nano エディターを使用します。
sudo nano /etc/nginx/nginx.conf
開いたファイルには、次のものがあります。
http {
...
}
個人の Web サイトを構成するには、http ブロック内に以下を追加する必要があります。
server {
listen 80;
server_name your_domain.com;
root /var/www/your_domain.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
その中で、listen はリスニング ポート番号を指定します。ここではデフォルトのポート 80 を使用します。server_name は Web サイトのドメイン名または IP アドレスを指定します。your_domain.com を独自のドメイン名または IP アドレスに置き換える必要があります。root はルートを指定します。ここでは、/var/www/your_domain.com に設定します。このディレクトリを作成し、そこに Web サイト ファイルを配置する必要があります。index は、デフォルトのインデックス ファイルを指定します。ここでは、index.html に設定します。場所リクエストの URL マッチング ルールを指定します。ここでは、すべてのリクエストを静的ファイルに向け、404 エラーを返します。
完了したら、次のコマンドで構成ファイルを保存して終了します。
Ctrl + X
よ
入力
次に、Nginx 構成ファイルが正しいことをテストする必要があります。次のコマンドを使用します。
sudo nginx -t
構成ファイルにエラーがない場合は、次の出力が表示されます。
nginx: configuration file /etc/nginx/nginx.conf test is successful
最後に、次のコマンドで Nginx を再起動して、新しい構成を有効にします。
sudo systemctl restart nginx
ステップ 3: Web サイトのファイルを作成する
前のステップで、Web サイトのルート ディレクトリを /var/www/your_domain.com として指定しました。次に、このディレクトリに Web サイト ファイルを書き込む必要があります。たとえば、次の内容を含む index.html というファイルを作成できます。
<!DOCTYPE html>
<html>
<head>
<title>My Personal Website</title>
</head>
<body>
<h1>Welcome to My Personal Website</h1>
<p>Here you can learn more about me and my work.</p>
</body>
</html>
ファイルを保存して終了したら、次のコマンドを使用して、Web サイトのファイルが Web サイトのルート ディレクトリに正しく配置されていることを確認できます。
ls /var/www/your_domain.com
Web サイト ファイルが正しく配置されている場合は、index.html ファイルの情報が表示されます。
ステップ 4: ウェブサイトにアクセスする
すべての構成と書き込みが完了したので、ブラウザーを使用して個人の Web サイトにアクセスできます。ドメイン名または IP アドレスをブラウザーに入力すると、作成した Web サイトのコンテンツが表示されるはずです。
おめでとうございます。Nginx を使用して、簡単な HTML ベースの個人用 Web サイトを正常に構築できました。Web サイトでは、HTML、CSS、JavaScript などのテクノロジを使用して、よりリッチなコンテンツと機能を設計および実装できます。このチュートリアルがお役に立てば幸いです。
高度な設定
上記の手順では、Nginx を使用して基本的な静的 Web サイトを構築する方法を示しました。ただし、より複雑なサイトでは、より多くの構成とセットアップが必要になる場合があります。ここでは、Nginx を最大限に活用するための高度な設定について説明します。
HTTPS 暗号化を使用する
ユーザーのプライバシーが関係する Web サイトでは、HTTPS 暗号化を使用することが非常に重要です。ここでは、Nginx で HTTPS を有効にする方法を示します。
まず、サーバーに SSL 証明書をインストールする必要があります。多くの商用 SSL 認証局から証明書を購入できますが、個人の Web サイトの場合は、無料の Let's Encrypt SSL 証明書を使用できます。Certbot ツールを使用して、Let's Encrypt SSL 証明書を取得してインストールする方法を見てみましょう。
Certbot をインストールする
次のコマンドを使用して、Certbot を Ubuntu にインストールできます。
sudo apt-get install certbot python3-certbot-nginx
SSL 証明書を取得する
Certbot をインストールしたら、次のコマンドで SSL 証明書を取得できます。
sudo certbot --nginx -d your_domain.com
上記のコマンドでは、your_domain.com を自分のドメイン名に置き換える必要があります。Certbot は、Nginx 構成を介してドメイン名を自動的に検出し、SSL 証明書を生成します。完了すると、/etc/letsencrypt/live/your_domain.com/ ディレクトリの下に証明書ファイルが見つかります。
HTTPS を有効にするように Nginx を構成する
次に、Nginx 構成ファイルで HTTPS を有効にする必要があります。/etc/nginx/sites-available/your_domain.com ファイルで、サーバー セクションに次の 2 行を追加します。
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
上記の構成で、ssl_certificate と ssl_certificate_key はそれぞれ、前に取得した SSL 証明書とキー ファイルの場所を指定します。
最後に、HTTP リクエストを HTTPS にリダイレクトする必要があります。サーバー セクションに次の構成を追加します。
server {
listen 80;
server_name your_domain.com;
return 301 https://$server_name$request_uri;
}
完了したら、次のコマンドを使用して Nginx 構成をリロードします。
sudo systemctl reload nginx
Web サイトで HTTPS 暗号化が有効になりました。ブラウザで https://your_domain.com にアクセスすると、HTTPS が有効になっていることがわかるはずです。
仮想ホストの構成
同じサーバーで複数の Web サイトを実行している場合は、仮想ホストを構成して、各 Web サイトが正しく実行されるようにする必要があります。Nginx では、サーバー ブロックを使用して仮想ホストを構成できます。
仮想ホスティングとは、異なるドメイン名または IP アドレスを使用して、同じサーバー上で異なる Web サイト サービスを提供することを指します。Nginx では、仮想ホストを構成することで、複数の Web サイトをデプロイできます。
/etc/nginx/sites-available/ ディレクトリの下に仮想ホスト構成ファイルを作成できます。ファイルの命名形式は {domain}.conf です。{domain} はバインドするドメイン名です。たとえば、Web サイトを example.com ドメイン名にバインドする場合は、example.com.conf というファイルを作成できます。
そのファイルでは、次の構文を使用して仮想ホストを定義できます。
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ =404;
}
}
上記の構成では、example.com という仮想ホストを定義しました。仮想ホストはポート 80 でリッスンし、example.com と www.example.com の 2 つのドメイン名を使用してアクセスします。仮想ホストのファイル ルート ディレクトリは /var/www/example.com/html、デフォルト ドキュメントは index.html、アクセス ログとエラー ログは /var/log/nginx/example.com.access に格納されます。 .log および /var それぞれ /log/nginx/example.com.error.log.
仮想ホストのロケーション ブロックは、/ パスがアクセスされたときに何が起こるべきかを定義します。上記の構成では、リクエストを $uri または $uri/ に転送し、リクエストが見つからない場合は 404 エラーを返します。
仮想ホストの構成が完了したら、ln コマンドを使用して /etc/nginx/sites-enabled/ ディレクトリへのシンボリック リンクを作成する必要があります。このディレクトリには、Nginx サーバーが実際に使用する仮想ホスト構成ファイルが含まれています。
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
次に、Nginx サーバー構成ファイルをリロードして有効にします。
sudo systemctl reload nginx
example.com または www.example.com にアクセスして、Web サイトにアクセスできるようになりました。
以上が仮想ホストの設定方法の紹介です。また、HTTPS を使用して Web サイトを保護し、さらに安全にすることもできます。次のセクションでは、SSL 証明書を使用して HTTPS を有効にする方法について説明します。
DDoS 攻撃を防ぐ
DDoS 攻撃は、攻撃者が複数のコンピューターを使用して標的のサーバーに大量の要求を送信し、サーバーを使用不能にする一般的なネットワーク攻撃です。Nginx では、制限リクエスト レートと接続レートを使用して DDoS 攻撃を防ぐことができます。
制限リクエスト率
リクエスト レートを制限することで、攻撃者が大量のリクエストを送信してサーバー リソースを消費することを防ぎます。Nginx の limit_req モジュールを使用して、リクエスト レートを制限できます。
http ブロックに次の構成を追加します。
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
上記の構成では、クライアントの IP アドレスによって区別される one という要求制限ゾーンを定義しました。リクエスト レートは 1 秒あたり 1 件に制限されています。
次に、仮想ホストでリクエスト レート制限を有効にする必要があります。仮想ホストのサーバー ブロックに次の構成を追加します。
limit_req zone=one burst=5;
上記の構成では、リクエスト制限ゾーン 1 を仮想ホストに適用し、バースト パラメータを 5 に設定します。バースト パラメータは、許可される瞬間的なリクエストの最大数を指定し、この値を超えるリクエストは拒否されます。
接続速度を制限する
リクエスト レートを制限するだけでなく、Nginx の limit_conn モジュールを使用して接続レートを制限することもできます。このモジュールは、各 IP アドレスからの同時接続数を制限できるため、攻撃者が過剰な接続リソースを使用するのを防ぐことができます。
http ブロックに次の構成を追加します。
limit_conn_zone $binary_remote_addr zone=addr:10m;
上記の構成では、クライアントの IP アドレスによって識別される addr と呼ばれる接続制限ゾーンを定義しました。接続制限領域のサイズを10MBに設定しました。
次に、仮想ホストでレート制限接続を有効にする必要があります。仮想ホストのサーバー ブロックに次の構成を追加します。
limit_conn addr 10;
上記の構成では、接続制限ゾーン addr を仮想ホストに適用し、最大接続数を 10 に設定します。
要約する
このチュートリアルでは、Nginx を使用して個人の Web サイトを構築する方法について説明します。最初に Nginx をインストールし、次に仮想ホストと SSL 証明書を構成しました。最後に、制限リクエスト レートと接続レートを使用して DDoS 攻撃を防ぐ方法について説明しました。
このチュートリアルを通じて、Nginx を使用して個人の Web サイトを構築する方法を理解し、いくつかの基本的な Nginx 構成スキルを習得する必要があります。ご不明な点がございましたら、お気軽にコメント欄にメッセージを残してください。