gpt4 book ai didi

ubuntu - 无法通过 apache 访问已安装的 s3 存储桶文件

转载 作者:太空宇宙 更新时间:2023-11-03 17:00:08 25 4
gpt4 key购买 nike

  • 我的一个 aws 帐户上有一个 S3 存储桶。
  • 我正在使用 s3cmd 界面将文件上传到存储桶。
  • 我使用 s3fs 将 s3 存储桶安装到 ubuntu ec2 实例,我成功完成了它并能够在我的 ec2 实例上列出。

    s3fs 命令 - s3fs XXXXXX-ouse_cache=/tmp/s3cache -oallow_other -opasswd_file=/etc/passwd-s3fs -ourl= http://s3.amazonaws.com -odefault_acl=public-read-write/mnt/XXXXXXXX

  • 在 ec2 上安装了 apache2。将文档目录更改为挂载 s3 路径的路径 -/mnt/XXXXXXXX 。我已成功配置并重新启动 apache2 服务。

但是,当我尝试使用 apache2 访问 S3 文件时,我收到“禁止访问此服务器上的/temp/xxxxTesting.flv 的权限。”

谁能帮我解决这个问题。此问题的任何可能原因。我尝试了所有的建议,但都是徒劳的。请有人指导我如何解决这个问题?

最佳答案

你的问号键好像卡住了。

S3 不是 block 设备,也不是文件系统,使用 s3fs 或任何其他文件系统模拟器提供文件永远不会为您提供最佳性能。

幸运的是,有一个更简单的解决方案。

我的图像文件在/var/content/images 中。

如果您从 my-web-site.com/images/any/path/here.jpg .jpeg 或 .gif 获取文件,那么我的本地 Apache 服务器会检查是否/var/content/images/any/path/here.jpg 实际上是本地硬盘上的一个文件。如果是,apache 提供本地文件。

如果它不是本地文件,则 apache 使用 HTTP 从 S3 存储桶中获取文件([P] 用于代理),这当然是 S3 的 native 接口(interface)和 apache 的东西处理起来也非常有效。

如果该文件也不在 S3 中,则当我们尝试从那里获取文件时,apache 会返回 S3 存储桶返回的错误页面。基本上在 3 行配置中完成:

RewriteEngine on
RewriteCond /var/content%{REQUEST_FILENAME} !-f
RewriteRule ^/images/(.*[gif|jpe?g])$ http://my-bucket-name.s3-website-us-east-1.amazonaws.com/images/$1 [P]

在我看来,这种方法似乎比尝试使用 s3fs 破解相同的功能要简单得多。

请注意,在我的某些系统上,我需要在 %{REQUEST_FILENAME} 之前添加物理路径,而有些则不需要。我没有研究具体原因,但请注意不同的环境可能需要不同的设置。您还需要有适当的模块可用,并且示例中的正则表达式仅适用于以 gif jpeg 和 jpg 结尾的文件名。

关于ubuntu - 无法通过 apache 访问已安装的 s3 存储桶文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17928101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com