2


私は、ユーザーが独自の html テンプレートを作成して Web に公開できるアプリケーションに取り組んでいます。ユーザーが [公開] をクリックすると、選択した名前のサブドメインで自分の Web サイトをホストするように作成します (例: 彼はサイトに名前を付けます)。 apple.ABC.com というサブドメインを作成します)。
このアプリケーションでは、1 人のユーザーが複数の Web サイト/テンプレートを作成できます。ここで、1 人のユーザーの Web サイトを 1 つのバケットに格納したいと考えてます。しかし、S3 バケットを調べたところ、バケットと Web サイトにホスティング ルールを設定できることがわかりました。
私がしようとしていることが可能かどうかを理解したかったのですが、そうでない場合は、1 つのテンプレートに対して 1 つのバケットを作成するかのように管理できません。どのユーザーが DB にいくつのテンプレートを持っているかを追跡するのは難しいでしょう。複数のエントリを持つこと。
AWS のサービスと API を使用してテンプレートを S3 に保存する必要があることは承知しています。BUCKET に複数の Web サイトを作成できるかどうかに関心があります。

EDIT:プロキシサーバーnginxを使用して解決策を考え出し、回答を更新しました

4

2 に答える 2

3

これは少しトリッキーですが、実行可能です。いくつかの調査の後、機能する解決策を見つけました。手順は次のとおりです。

  1. 操作を実行するには、プロキシ サーバーが必要です (例:Nginx ) 。
  2. ウェブサイトがあるバケットにリクエストをプロキシするには、default.conf ファイルの設定を変更する必要があります。
  3. これはconfファイルです:

    server {
        # Listen on port 80 for all IPs associated with your machine
        listen 80;
    
        # Catch all other server names
        server_name _;
    
        # This code gets the host without www. in front and places it inside
        # the $host_without_www variable
        # If someone requests www.coolsite.com, then $host_without_www will have the value coolsite.com
        set $host_without_www $host;
        if ($host ~* www\.(.*)) {
            set $host_without_www $1;
    
        }
    
        location / {
            # This code rewrites the original request, and adds the host without www in front
            # E.g. if someone requests
            # /directory/file.ext?param=value
            # from the coolsite.com site the request is rewritten to
            # /coolsite.com/directory/file.ext?param=value
            set $foo 'http://sites.abcd.com';
            # echo "$foo";
            rewrite ^(.*)$ $foo/$host_without_www$1 break;
    
    
            # The rewritten request is passed to S3
            proxy_pass http://sites.abcd.com;
            include /etc/nginx/proxy_params;
        }
    }
    
  4. 次に、DNS 設定で CNAME をプロキシ サーバー アドレスに変更します ( router.abcd.com.

  5. また、wwwizer.com のIP アドレスを記録に使用することもできます。これにより、URL に@関係なく、正しい宛先にリクエストが送信されます。www
于 2013-12-20T04:49:41.873 に答える