如何配置 nginx 来提供来自 AWS S3 存储桶的静态文件?

问题描述 投票:0回答:2

我目前正在部署一个简单的 Flask Web 应用程序,使用 nginx 作为我的 WSGI 和用户之间的反向代理。但是,我不想在我的 VPS 上存储静态文件(特别是图像),因为随着用户数量的增加,存储空间将开始变得昂贵。我已经能够使用 AWS S3 boto3 包将图像上传到存储桶,但我不完全确定如何配置 nginx Web 服务器(如下所示)来提供 S3 存储桶中的图像。

server {                                                                        
        listen 80;                                                              
        server_name $IP_ADDR;                                              
                                                                                
        location /static {                                                      
                alias /home/a_mankavil11/flaskBlog/flaskBlog/static;            
        }                                                                       
                                                                                
        location / {                                                            
                proxy_pass http://localhost:8000;                               
                include /etc/nginx/proxy_params;                                
                proxy_redirect off;                                             
        }                                                                       
                                                                                
                                                                                
} 

请记住,我的服务器配置经验非常初级。

python nginx flask amazon-s3 boto3
2个回答
4
投票

这适用于我的服务器。这使我的服务器使用我的 S3 存储桶中的图像,但您可以执行其他静态文件,只需更改远程 S3 文件夹和本地位置块即可:

 location /images/ {
proxy_pass https://s3.us-west.amazonaws.com/mybucket/images/;
default_type "image/gif";
   }

在 S3 控制台中,导航到要使用的存储桶内的对象(图像或静态文件)。单击对象属性,它将为您提供对象 URL,您可以在其中获取路径(请注意,我在 S3 存储桶中创建了一个图像目录,它不必称为图像):

AWS S3 Object URL inside bucket


0
投票

proxy_pass
方法是正确的,但请考虑您的 EC2 实例和 S3 存储桶之间的私有连接,因此内容只能通过 AWS VPC 网络中建立的隧道访问。不这样做会导致不好的结果:

  • 通过万维网传输每个请求数据包,直到它到达带有所需文件的必要 AWS 服务器;
  • 您的系统可能遭受 DDOS 攻击;
  • 当然还有更多...

有关如何实现这一目标的完整答案,您可以在我对类似问题的回答中找到:)

© www.soinside.com 2019 - 2024. All rights reserved.