NGinx +プライベートS 3


どのように私はプライベートS 3の写真を見ることができます.今日、私は我々がAGONの上でNginxでそれをすることができる方法を示します.まず以下のように設定します.
  • パブリックサブネットとプライベートサブネットとのVPC
  • S 3のVPCエンドポイント
  • NGINXによるECS Fargateの静的ウェブ
  • アプリケーションのイメージを保存する

  • 以下のような静的なウェブをインターネットからロードされたイメージで持っています.

    S 3にストアするイメージがあります.それで、静的なウェブを所有したいので、そのイメージを見てください.

    今、私は特定のセクションの設定に入ります.
    (1)最初に、VPCエンドポイントから画像を見ることができるように、S 3のバケットポリシーを更新する必要があります.
    {
        "Version": "2008-10-17",
        "Id": "PolicyForCloudFrontPrivateContent",
        "Statement": [
            {
                "Sid": "Access-to-specific-VPCE-only",
                "Effect": "Allow",
                "Principal": "*",
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::demo-static-s3/*",
                "Condition": {
                    "StringEquals": {
                        "aws:sourceVpce": "vpce-0d92e50f230bc8070"
                    }
                }
            }
        ]
    }
    
    次に、nginxを以下のようにS 3から画像を表示できるように設定します.
    location ~^/image/(.+)$ {
            resolver 10.0.0.2;
            proxy_pass http://s3-ap-southeast-1.amazonaws.com/demo-static-s3/image/$1; 
    }
    

  • リゾルバ:あなたのAWS VPCのDNSサーバのIPアドレス
  • CIDR範囲のVPCは10.0.0.0/16です.したがって、DNSサーバのIPアドレスは10.0.0.2 =>リゾルバは10.0.0.2です

    10.0.0.0: Network address.
    10.0.0.1: Reserved by AWS for the VPC router.
    10.0.0.2: Reserved by AWS. The IP address of the DNS server is the base of the VPC network range plus two. For VPCs with multiple CIDR blocks, the IP address of the DNS server is located in the primary CIDR. We also reserve the base of each subnet range plus two for all CIDR blocks in the VPC. For more information, see Amazon DNS server.
    10.0.0.3: Reserved by AWS for future use.
    10.0.0.255: Network broadcast address. We do not support broadcast in a VPC, therefore we reserve this address.


    参照https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html

  • プロキシノーパス
  • 形式http://s3-ap-southeast-1.amazonaws.com/[main_bucket]/[sub_bucket]/$1
    次に、オンライン画像の代わりに、S 3から画像を読み込むためにHTMLを変更します.
    <div class="container">
        <h1>Hey there</h1>
        <img src="https://cleandevs.com/image/668c1d479e27bb8750823655c83a6c9bd90263f9_hq.jpg"/>
      </div>
    
    ( 4 )最後に、ECS Fargateに配備します.次のようになります.

    これは、ソリューションを解決することができますS 3からCloudfrontを使用せずに画像を表示します.