🐶

EC2をプロキシサーバーにして、s3上の複数静的サイトへリダイレクトする

2024/04/20に公開

前提

  • VPC、サブネット、ルーティングテーブルが作成済みである
  • ホスト名を取得済みである
  • 作成済みのパブリックIP付きEC2がある

やりたいこと

  • EC2にnginxを導入し、プロキシサーバーとして運用しリダイレクトしたい
  • ドメイン名を別々に設定し、1つのS3内の複数ディレクトリへのリダイレクトしたい

構成図

リダイレクト先のS3の作成

バケット情報

下記がバケットフォルダ階層になります。

バケット名: test-proxy-web
├ aaa
│  └ index.html
├ bbb
│  └ index.html
└ ccc
   └ index.html

index.html

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>aaa</title>
</head>
<body>
    <h1>aaa</h1>
</body>
</html>

バケットポリシー

プロキシサーバーが配置されているVPCからのみのgetアクションのみを許可します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "S3のARN/*",
            "Condition": {
                "StringEquals": {
                    "aws:sourceVpc": "vpcID"
                }
            }
        }
    ]
}

その他設定

静的ウェブサイトホスティングを有効にする。

エンドポイントの作成

VPCのエンドポイントの作成

  • サービスカテゴリ
    • AWSのサービス
  • サービス
    • com.amazonaws.ap-northeast-1.s3
  • タイプ
    • ゲートウェイ
  • VPC
    • プロキシサーバーを利用するVPC
  • サブネット
    • プロキシサーバーを配置したパブリックサブネット

Route53の設定

aaa,bbb,cccの3つで作成します。

プロキシサーバーの構築

EC2情報

OS インスタンスタイプ
amazonlinux2023 t2.micro

プロキシサーバー用のnginxを導入

# nginx をインストール
# dnf -y install nginx
# nginx のバージョン確認
# nginx -v
nginx version: nginx/1.24.0
# nginx の起動
# systemctl start nginx
# nginx の自動起動設定
# systemctl enable nginx

リダイレクト設定

# conf.dへの移動
# cd /etc/nginx/conf.d
# 設定ファイルの作成
# vi aaa.conf

以下が設定ファイル内容

aaa.conf
server {
    listen 80;
    server_name route53にて作成したレコード名;

    location / {
        proxy_pass s3のバケットウェブサイトエンドポイント/aaa/;
    }
}

同様にbbb.confとccc.confを作成する。

nginx設定の再読み込み

# nginx の設定ファイルの再読み込み
# systemctl restart nginx

アクセス確認

Route53で設定した、URLにアクセスしてページが表示されることを確認

Discussion