Apache虚拟主机配置,用于从S3存储桶提供静态文件

时间:2017-09-18 16:54:16

标签: apache amazon-s3

我需要为我的apache虚拟主机实现以下逻辑:

  • 如果文件存在于S3存储桶中,请从那里提供
  • 否则向fastcgi服务发送请求(在此特定用例中为php-fpm)

通过php提供S3文件是不可接受的,我们无法将s3存储桶映射为apache的文件夹。

所以,问题是:如果有一种已知的方法来检查来自虚拟主机配置的S3存储桶中是否存在文件(如果不是403/404错误)并基于此实现逻辑?

1 个答案:

答案 0 :(得分:0)

您说要:

  • 如果文件在S3存储桶中,请从那里提供文件
  • 否则,将请求发送到fastcgi服务(在此特定用例中为php-fpm)

虽然我可以想象在Apache中完全配置它可能会更方便,但我建议这样做可能会更好:

  • 始终将请求发送到fastcgi服务(php-fpmIf)
  • 让服务检查文件是否在S3中存在
  • 如果文件存在,服务将返回S3文件(或重定向到文件)。
  • 否则服务将处理请求并生成结果

Amazon提供了一个SDK,用于使用PHP访问S3:

https://docs.aws.amazon.com/aws-sdk-php/v2/guide/service-s3.html https://docs.aws.amazon.com/AmazonS3/latest/dev/RetrieveObjSingleOpPHP.html

对于您要使用的方法,有一个已回答的SO问题,即如何处理PHP中的403错误:

how to handle a 403 error with PHP