我想设置单独的亚马逊ec2实例,我存储用户通过我的网站上传的所有图像。我希望能够显示来自这个专属服务器的图像。我知道如何设置指向此服务器的DNS名称。但我想知道如何设置目录,例如,如果我将图片网址称为http://images.mydomain.com/images/sample.jpg,那么
images.mydomain.com是服务器名称和
图像应该是文件夹名称
现在的问题是网络服务器应该在这个服务器上运行,这是为图像提供服务还是我可以将图像文件夹公开,以便全世界都可以看到它?如何避免目录列表?
非常感谢指向任何文档的指针。
答案 0 :(得分:1)
当然可以设置单独的EC2实例来为您的图像提供服务。您可能有充分的理由这样做 - 例如,您可能只想授权特定用户或用户组以一种受程序逻辑严密控制的方式访问某些图像。
OTOH,如果您只想将图像/媒体文件的访问权限从提供HTML / Web内容的服务器中分离出来,您可以通过将这些文件移动到专门调整的服务来获得更好的性能/可扩展性用于存储和Web访问。亚马逊的S3(简单存储服务)是一个相对简单的选择。亚马逊的CloudFront内容分发网络(CDN)或竞争CDN将是更高性能的选择。
使用CDN进行文件访问会增加配置CDN的复杂性,但如果您遇到从主Web服务器分割媒体访问的麻烦,并且您预计会有任何重大的I / O负载,我发现这是一种高回报率的方法。
答案 1 :(得分:1)
我绝对不会按照你的计划实施这个。您应该将所有图像存储在Amazon S3存储桶中,并通过Amazon的CloudFront CDN提供。为什么要经历设置和维护EC2实例来处理亚马逊已经完成的事情的麻烦? S3提供无限存储,管理权限,元数据等.CloudFront可以快速访问您的图像,并在世界各地的边缘位置缓存它们。此外,您可以使用Amazon Route 53(或其他一些DNS服务)将各种CNAME指向您的CloudFront分配。
如果您对此方法感兴趣,我很乐意提供有关如何进行此设置的更多信息。
答案 2 :(得分:0)
是的,您肯定需要在机器上运行网络服务器。否则,客户端无法通过http /端口80连接并在浏览器中查看图像。这与启用的目录列表无关。运行Web服务器后,可以在其配置中禁用目录列表。
在服务器上安装apache并运行它(http://httpd.apache.org/docs/2.0/install.html)。然后,在其配置中设置所谓的“站点”,该站点指向本地目录,该目录将成为服务器的基本目录。例如,它可以是Unix系统上的/ home / apache。在那里你创建你的图像文件夹。如果您的apache设置正确,则可以通过http://images.mydomain.com/images/sample.jpg访问您的图片。