0

我想设置单独的亚马逊 ec2 实例,在其中存储用户通过我的网站上传的所有图像。我希望能够显示来自这个独家服务器的图像。我知道如何设置指向该服务器的 DNS 名称。但我想知道如何设置目录,例如,如果我将图像 url 称为http://images.mydomain.com/images/sample.jpg,那么

images.mydomain.com 是服务器名称,

图像应该是文件夹名称

现在的问题是是否应该在此服务器上运行一个网络服务器,该服务器将为图像提供服务,还是我可以将图像文件夹公开,以便全世界都可以看到它?如何避免目录列表?

指向任何文档的指针将不胜感激。

4

3 回答 3

1

当然可以设置一个单独的 EC2 实例来为您的图像提供服务。您可能有充分的理由这样做 - 例如,您可能希望仅授权特定用户或用户组访问某些图像,这种方式受程序逻辑的严格控制。

OTOH,如果您只是希望将图像/媒体文件的访问与提供 HTML/Web 内容的服务器分开,通过将这些文件移动到专门针对存储和调整的服务,您将获得更好的性能/可扩展性网络访问。Amazon 的 S3(简单存储服务)是一种相对简单的选择。Amazon 的 CloudFront 内容分发网络 (CDN) 或与之竞争的 CDN 将是性能更高的选择。

使用 CDN 进行文件访问确实增加了配置 CDN 的复杂性,但是如果您遇到从主 Web 服务器分割媒体访问的麻烦,并且如果您期望任何显着的 I/O 负载,我已经发现这是一种高回报的努力付出的方法。

于 2012-07-10T02:39:20.697 回答
1

我绝对不会按照您的计划实施此操作。您应该将所有图像存储在 Amazon S3 存储桶中,并通过 Amazon 的 CloudFront CDN 提供它们。为什么要经历设置和维护 EC2 实例的麻烦来做亚马逊已经做过的事情?S3 提供无限存储、管理权限、元数据等。CloudFront 提供对图像的快速访问,将它们缓存在世界各地的边缘位置。此外,您可以使用 Amazon Route 53(或其他一些 DNS 服务)将各种 CNAME 指向您的 CloudFront 分配。

如果您对这种方法感兴趣,我很乐意提供有关如何设置的更多信息。

于 2012-07-10T19:07:04.727 回答
0

是的,您肯定需要在机器上运行网络服务器。否则客户端将无法通过 http/port 80 连接并在浏览器中查看图像。这与启用目录列表无关。运行网络服务器后,您可以在其配置中禁用目录列表。

在您的服务器上安装 apache 并运行它(http://httpd.apache.org/docs/2.0/install.html)。然后,您在其配置中设置所谓的“站点”,它指向一个本地目录,该目录将成为您服务器的基本目录。例如,它可以是 Unix 系统上的 /home/apache。在那里你创建你的图像文件夹。如果您的 apache 设置正确,您可以通过http://images.mydomain.com/images/sample.jpg访问您的图像。

于 2012-07-10T01:38:17.047 回答