初心者でも安心!awsとnginxで学ぶEC2構築完全マニュアル

目次

はじめに

調査の目的

本調査は「aws nginx」に関する基本から実践までをわかりやすくまとめたものです。AWSのEC2上でNginxをインストール・起動・設定する手順や、よくあるトラブルとその対処法を丁寧に解説します。中級者向けの活用例やALB(Application Load Balancer)との違いも扱います。

対象読者

初心者から中級者を想定しています。Linuxやクラウドに不慣れな方でも、具体的なコマンド例や設定例を示すので実践しながら学べます。すでに経験がある方は設定の比較や応用例が参考になります。

本書の進め方

章ごとに手順と背景を順を追って説明します。実際のコマンド例や設定ファイルはそのままコピーして使えるように記載します。問題が起きた時のチェックポイントも設けますので、手順に沿って進めてください。

AWS EC2上でのNginxインストールと起動手順

概要

EC2をWebサーバーにするための、Nginxのインストールと起動手順を分かりやすく説明します。SSHでEC2に接続済みで、管理者権限が使える前提です。

前提

  • SSHでEC2に接続済み
  • Amazon Linux 2系またはUbuntu系のいずれか

インストール(例)

  • Amazon Linux 2:
  • sudo yum install -y nginx
  • Ubuntu:
  • sudo apt update && sudo apt install -y nginx

起動と確認

  • 起動: sudo systemctl start nginx
  • 状態確認: sudo systemctl status nginx
  • 「Active: active (running)」と表示されれば起動成功です。

自動起動設定

  • 設定: sudo systemctl enable nginx
  • 確認: sudo systemctl is-enabled nginx
  • 「enabled」と表示されます。

ブラウザからの確認

  • ブラウザで http://パブリックIP にアクセスします。
  • EC2のセキュリティグループでポート80がInboundで許可されているか確認してください。

よくあるトラブル対応

  • ポートが開いていない場合: セキュリティグループを編集して80を許可
  • サービスが起動しない場合: sudo journalctl -u nginx –no-pager や /var/log/nginx/error.log を確認
  • ポート確認: sudo ss -tlnp | grep :80

必要なコマンドはすべてsudoで実行してください。丁寧に進めれば短時間で動作確認できます。

GUI環境でのEC2とNginx構築手順

前提

この章では、AWSコンソール(GUI)を使ってEC2を作成し、SSHで接続してNginxを導入する手順を丁寧に説明します。対象は初心者向けですので、画面操作と最低限のコマンドを組み合わせて進めます。

1. EC2インスタンス作成(コンソール)

  1. AWSマネジメントコンソールにログインし、EC2ダッシュボードを開きます。
  2. 「インスタンスを起動」からAMIはAmazon Linux 2を選びます。インスタンスタイプはt2.micro(無料枠)で問題ありません。
  3. キーペアを作成または既存のものを選び、秘密鍵(.pem)をダウンロードします。
  4. セキュリティグループでポート22(SSH)と80(HTTP)を開放します。ソースは自分のIPや0.0.0.0/0(公開)を状況に合わせて設定してください。

2. SSH接続(GUIからローカル端末へ)

  1. ダウンロードした秘密鍵のパーミッションを制限します:
    chmod 400 /path/to/秘密鍵.pem
  2. 公開IPを確認し、以下で接続します:
    ssh -i "/path/to/秘密鍵.pem" ec2-user@パブリックIP
    このコマンドで接続できれば次に進みます。

3. Nginxインストールとサービス操作

  1. パッケージリストを更新します:
    sudo yum update -y
  2. Nginxをインストールします:
    sudo yum install -y nginx
  3. Nginxを起動し、自動起動を有効にします:
    sudo systemctl start nginx
    sudo systemctl enable nginx
  4. 状態を確認して「Active: active (running)」になっていることを確認します:
    sudo systemctl status nginx

4. 動作確認(ブラウザ)

ブラウザでEC2のパブリックIPにアクセスすると、Nginxのウェルカムページが表示されます。表示されない場合はセキュリティグループの設定とNginxのステータスを再確認してください。

補足(よくあるつまずき)

  • 秘密鍵のパスやパーミッションが正しくないとSSH接続できません。
  • セキュリティグループで80番を開放していないとブラウザで見えません。
  • コマンドはec2-userで実行します。sudoが必要な操作は必ずsudoを付けてください。

Nginxの役割と高度な活用方法

概要

Nginxは軽量で高速なソフトウェアで、Web公開やリクエストの中継、負荷分散など幅広く使われます。cloud5.jpの紹介にあるように、ロードバランサー、リバースプロキシ、Webサーバーとしての役割が代表的です。

主な役割

  • Webサーバー:静的ファイル(画像やHTML)を高速に配信します。例えば画像配信をNginxに任せ、アプリはAPI処理に集中させます。
  • リバースプロキシ:外部からの要求を内部のアプリケーションに中継します。複数のアプリに均等に振り分ける際に使います。
  • ロードバランサー:複数バックエンドへリクエストを分散します。チケット販売サイトでは、アクセス集中時に複数のアプリサーバーへ振り分けて処理を安定化させます。

ロードバランサー設定例(簡略)

upstream backend {
server app1.example.com;
server app2.example.com;
}
server {
location / {
proxy_pass http://backend;
}
}
この設定でNginxは受けたリクエストをapp1/app2に分散します。

NginxとAWS ALBの比較

  • Nginx:細かい挙動を自由に設定できます。キャッシュや細かなルールを自前で管理したい場合に向きます。
  • ALB:AWSが管理するサービスで導入が簡単です。運用負荷を減らしたい場合に便利です。
    どちらを選ぶかは、柔軟性と運用のどちらを重視するかで決めるとよいです。

高度な活用例

  • キャッシュで応答を高速化する
  • SSL終端をNginxで行い内部は平文にする
  • レート制限やIP制御で攻撃を抑える
  • A/Bテストやブルーグリーンデプロイでトラフィックを切り替える
    これらを組み合わせると、高トラフィック環境でも安定したサービス提供が可能です。
よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次