🐶
EC2をプロキシサーバーにして、s3上の複数静的サイトへリダイレクトする
前提
- 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