2013-08-07 4 views
2


Я работаю над приложением, в котором пользователь может создавать свои собственные html-шаблоны и публиковать их в Интернете. Теперь, когда пользователь нажимает на публикацию, я хочу создать сайт своего веб-сайта на субдомен с именем, которое он выбирает. (EX: он называет ядро ​​сайта, я создаю субдомен apple.ABC.com).
В приложении один пользователь может создавать несколько веб-сайтов/шаблонов. Теперь я хочу хранить отдельные сайты пользователей в одном bucket. Если у пользователя есть два шаблона Ex: apple.com и berry.com, у меня есть две папки в ковше, по одному для каждого сайта. Но я прошел через ведро S3, и я обнаружил, что могу устанавливать правила размещения на ведре и на веб-сайте.
Я хотел бы понять, возможно ли то, что я пытаюсь, и если не так, как я могу управлять им, как если бы я создавал одно ведро для одного шаблона, мне будет сложно отслеживать, какой пользователь имеет сколько шаблонов, как в БД I должен иметь несколько записей.
Я знаю, что мне придется использовать службы AWS и API для хранения шаблонов на S3, мне интересно, могу ли я иметь несколько сайтов в BUCKET.Хостинг нескольких веб-сайтов в BUCKET на Amazon S3

EDIT: Разобрался решение с использованием прокси-сервера Nginx и обновленный ответ

ответ

2

Это немного сложнее, но doable.After некоторые исследования, я нашел решение, которое может work.Steps следующим образом:.

  1. Нам нужен прокси-сервер для выполнения операций (например : Nginx)
  2. Нам необходимо внести изменения в конфигурационный файл default.conf в прокси-запросы в ведро с вашим сайтом.
  3. Это файл конф:

    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) .Отель прокси-сервер будет принимать запрос и направить его на S3, где размещен ваш сайт.

  5. Кроме того, вы можете использовать IP-адресдля записи @.Это будет отправлять ваш запрос, чтобы исправить пункт назначения, независимо от www, в вашем URL-адресе.
5

Чтобы использовать статический сайт особенность s3, вы можете отображать только один домен за ведро. Нельзя сказать домену, чтобы использовать папку ведра вместо самого ведра.