Перемещение файлов в Amazon S3 с сохранением URL-адресов - PullRequest
7 голосов
/ 15 декабря 2009

Я здесь немного рассол. В настоящее время у меня есть веб-сайт, размещенный в среде общего хостинга сторонним хостинг-провайдером. Поэтому у меня нет корневого доступа к серверу IIS, на котором работает этот веб-сайт.

У меня сейчас есть каталог на сайте, например:

mysite.com / MyFiles

В каталоге "myfiles" в настоящее время много файлов. Так много файлов, что он помещает меня поверх дискового пространства на моем хосте. Есть несколько вещей, которые нужно рассмотреть:

  1. У хоста нет более щедрого плана обновления до. Они только готовы взимать с нас (очень высокую) плату за перерасход.

  2. Нам нужно оставаться с этим хостом до конца нашего контракта с ними, который находится почти год назад.

Я хотел бы взять содержимое этого каталога и поместить его в Amazon S3, что уменьшило бы нагрузку на дисковое пространство учетной записи хостинга. Единственная проблема заключается в том, что URL-адреса файлов должны оставаться неизменными!

Так, например, если внешний сайт ссылается на mysite.com/myfiles/image.jpg, я хочу, чтобы изображение на этом сайте продолжало работать без помех.

Есть ли какой-нибудь возможный способ добиться этого?

Ответы [ 4 ]

10 голосов
/ 15 декабря 2009

Я бы порекомендовал создать корзину S3 (и, возможно, дистрибутив Cloudfront, который находится над ней), заполненный макетом папки, которая соответствует вашему существующему сайту (для будущей миграции).Затем создайте запись CNAME в DNS, чтобы присвоить вашему контейнеру / дистрибутиву понятное имя (например, s3.my.domain).

Затем добавьте средство перезаписи URL на существующий сайт, которое перенаправляет запросы на http://my.domain/myfiles/xxx на соответствующий S3URL, например, `http://s3.my.domain/myfiles/xxx'.

Когда ваш хостинг-контракт завершен, измените DNS, чтобы указать свой корневой каталог и www записей в сегменте / распределении, или другой хост, если требуется.

I 'в настоящее время я использую Cloudfront для географического кэширования статического контента для одного из моих предприятий, и он прекрасно работает;До сих пор нулевое время простоя ( ~ 6 более 12 месяцев).


Июнь 2010: Cloudfront был превосходным, намного дешевле, чем предыдущая система хостинга.В настоящее время мы обрабатываем около 2,5 миллионов запросов в месяц (~ 750 ГБ) всего за 120 долларов США.

0 голосов
/ 06 января 2010

Переместите файлы и настройте обработчик 404 в каталоге. Обработчик 404 может перенаправить клиента со статусом 301 или 302 на URL S3 прозрачно. Другие рекомендации по использованию перезаписи URL, скорее всего, не будут работать для любых файлов, не относящихся к aspx, так как вы используете поставщика общего хостинга, и они обычно не поддерживают сопоставления с подстановочными символами ASP.NET.

0 голосов
/ 15 декабря 2009

Первый вопрос: почему сторонним сайтам важно иметь непрерывные URL-адреса вашего сайта? Они платят вам за контент? Если они не платят вам за контент, есть ли какая-то выгода, которую вы получаете, предоставляя им контент бесплатно? Это деловое решение, и, возможно, вы пришли к выводу, что за предоставление такого контента стоит заплатить чрезмерную плату.

Второй вопрос: сколько URL на самом деле связано со сторонних сайтов? Вы можете потратить время на то, чтобы эти URL-адреса были доступны, и переключить все остальное на хостинг S3. Ответ Google "ссылка:" может помочь ответить на этот вопрос.

Итак, к решениям: первое решение работает, если у вас есть возможность создавать 301 переадресацию. Просто установите перенаправление для каждого URL, который вы хотите переместить.

Второе решение - обратный прокси-сервер, в котором URL-адреса на mysite.com сопоставляются с mysite.s3.amazon.com. Я не уверен, что это действительно хорошее решение; вы будете платить за пропускную способность для прокси файлов. Кроме того, если у вас есть возможность настроить обратный прокси-сервер, у вас есть возможность создавать 301 переадресацию.

Третье решение: массово переместите свой сайт и получите карту доменного имени на S3 (с помощью сопоставления CNAME). Да, вы платите за хостинг, которым больше не пользуетесь. А если вы используете динамический контент, он не будет работать (но, возможно, тогда вы заплатите 30 долларов в месяц за S3).

И, наконец, не решение, а путь вперед: используйте отдельное доменное имя для дополнительного статического содержимого. Это доменное имя может быть сопоставлено через CNAME с корзиной Amazon.

0 голосов
/ 15 декабря 2009

Вы можете найти информацию о том, что вам нужно, просмотрев документацию Virtual Hosting of Buckets для Amazon S3. Вы можете настроить имя хоста, которое будет использоваться для доступа к файлам S3, что может помочь сделать то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...