通过Heroku从AmazonS3提供静态文件服务

通过Heroku从AmazonS3提供静态文件服务,heroku,flask,gunicorn,Heroku,Flask,Gunicorn,我有一个Python应用程序,它使用很多静态文件。我想将这些静态文件存储在AmazonS3上。当用户请求文件(如pdf)时,将从S3提供该文件。然而,出于美观的目的,我不想在地址栏中显示S3URL,因为我觉得这只会让用户感到困惑。如果用户要下载一个文件,我不介意下载URL是否显示为S3,但对于将在浏览器中查看的文件,我相信隐藏真实URL是有意义的 示例:用户在查看pdf文件时,服务器实际上是从外部url(如 请注意,我这样做不是出于安全原因。经过一些研究,我发现运行Nginx的服务器可以通过“X

我有一个Python应用程序,它使用很多静态文件。我想将这些静态文件存储在AmazonS3上。当用户请求文件(如pdf)时,将从S3提供该文件。然而,出于美观的目的,我不想在地址栏中显示S3URL,因为我觉得这只会让用户感到困惑。如果用户要下载一个文件,我不介意下载URL是否显示为S3,但对于将在浏览器中查看的文件,我相信隐藏真实URL是有意义的

示例:用户在查看pdf文件时,服务器实际上是从外部url(如

请注意,我这样做不是出于安全原因。经过一些研究,我发现运行Nginx的服务器可以通过“X-Accel-Redirect”屏蔽URL。然而,由于Heroku的原因,这并不是一个真正的选择

当Heroku处理路由时,有没有一种方法可以仅仅使用Herokus平台来实现这种“屏蔽”

我已经看到了一些关于提供静态文件的问题,但是没有关于URL屏蔽的问题

我的应用程序堆栈是:

  • 蟒蛇瓶
  • 古尼科恩
  • 赫罗库

在你的Flask应用程序中创建一条路径,并重定向到相应的S3文件

@app.route('/s3/<path:path>')
def s3_file(path):
    return redirect('https://www.amazons3.com/user/file/{}'.format(path), code=301)
url_for('s3_file', path='file2.pdf')