使用NGINX 作为对象存储网关
发布网友
发布时间:2024-09-30 07:08
我来回答
共1个回答
热心网友
时间:2024-10-01 15:02
原文作者:Elijah Zupancic of F5
您是否曾经不小心发错了链接,它不是链接到您的 CDN 中的文件,而是链接到了像是 Amazon S3 这样的对象存储中的文件,而且这个链接还被大量传播使用?您是否被随之而来的飙升的云服务成本吓了一跳,或者您的云提供商甚至切断了链接?如果答案是“是”,那么本文正适合您。本文将介绍如何将 NGINX 作为缓存网关前置于 S3 私有 存储桶,从而在您的私有存储桶和公共互联网之间建立一层保护。这种做法有两个优点:NGINX 会缓存对您的对象存储的请求,同时还能防止对象存储中的内容暴露给公网。
虽然 Amazon S3 是亚马逊云科技(AWS)的专有产品,但在事实层面,它已然成为 对象存储系统的标准接口,许多厂商都提供了与之兼容的存储产品,例如 Backblaze、Digital Ocean、Google Storage、Minio、NetApp、Nutanix、Tencent Cloud、VMware 和 Wasabi 等。尽管 S3 API 被大范围支持,但 S3 API 的具体实现通常不太适合非存储操作,比如不适合支持大量的公共互联网流量。于是人们就产生了这样一个共同的需求:在 S3 API 的前面加设一层,以将存储接口桥接到另一个应用或特定用户接口。NGINX 可以充当此桥梁,并通过它的模块生态系统和可配置性创造额外的价值。
本文将通过探索一个托管在 GitHub 上 功能完整的 Docker 实现(我们也提供了一个独立的 Ubuntu 安装实例),展示如何将 NGINX 开源版和 NGINX Plus 配置为一个与 S3 兼容的对象存储的只读网关。虽然本文只介绍如何将 NGINX 设置为与 S3 兼容的服务的网关,但您可以将这种方法延伸应用到任何 AWS API 请求的签署。
您可能会纳闷,“我的对象存储已经在大规模为文件提供服务了,何必在前面又多加一层呢?
答案很简单:S3 等对象存储只擅长一件事情 —— 存储和检索对象。而 NGINX 是一个高度可配置的反向代理,能够在作为基础对象存储网关的前提下提供更多功能。因此,它可以很好地支持多种用例,其中包括以下这些典型用例。
高速缓存安全控制、访问内部应用、压缩和内容优化、安全性、应用网关等特性,NGINX 可以帮助对象存储更好地服务于多种场景。
NGINX 允许您在 S3 API 前面构建另一个安全层,从而可以对发出过多下载请求的用户进行 速率限制、限制 存储桶内可以访问的对象路径等。您还可以使用 F5 NGINX App Protect WAF 或 NGINX ModSecurity WAF 等集成式 Web 应用防火墙 (WAF) 保护 S3 API。
从站点提供内容时,对所有资源使用同一域名来满足安全、品牌、一致性和可移植性的要求十分常见。因此,从同一主机同时提供静态和动态内容也是常有的需求。当被用作 S3 API 网关时,NGINX 不仅可以从对象存储中提供静态文件,而且还可以针对来自应用服务器的动态内容请求提供代理和负载均衡功能。
在 Docker 中配置和运行 NGINX 网关,您可以选择 NGINX 开源版或 NGINX Plus,具体依赖于您的实际需求。NGINX Plus 提供额外的高级功能,例如更高级的安全性和监控功能。
更多资源
想要更及时全面地获取NGINX相关的技术干货、互动问答、系列课程、活动资源?
请前往NGINX开源社区:
使用NGINX 作为对象存储网关
高速缓存安全控制、访问内部应用、压缩和内容优化、安全性、应用网关等特性,NGINX 可以帮助对象存储更好地服务于多种场景。NGINX 允许您在 S3 API 前面构建另一个安全层,从而可以对发出过多下载请求的用户进行 速率限制、限制 存储桶内可以访问的对象路径等。您还可以使用 F5 NGINX App Protect WAF 或...
ip动态 - StormProxies
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效地隐藏用户的真实IP地址,保护用户的隐私和安全。2. 快速响应:StormProxies的动态代理服务器具有快速响应的特点,可以快速响应用户的请求,提高用户的网络访问速度和效率。3. 高度可定制:StormProxies的动态代理服务器可以根据用户的需求进行定制,例如可以根据用户的地理位置、网络带宽、访问频率等因素进行定制。4. 多种协议支持:…StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP纯净高匿;2、覆盖全球20...
前端代码能抛弃nginx放到oss上面吗
可以把前端代码托管在OSS(对象存储服务)上,但是无法直接替代Nginx。Nginx是一种高性能的Web服务器和反向代理服务器,具有负载均衡和缓存等功能。它可以提供更强大的性能、安全性和灵活性,能够处理前端代码、静态文件和动态请求等。而OSS主要是用于存储和分发静态文件,可以提供高可用、高扩展的对象存储服务。
Ops实践 | 手把手教,快速搭建企业级高可用MinIO分布式对象存储实践
1. 通过 Nginx 负载均衡访问单机或分布式集群的 MinIO 服务 Console 页面和 API 页面。2. 使用 mc 工具对 MinIO 集群中的 Bucket 进行 CURD 操作。3. 自定义用户权限策略和 Bucket 资源限制。4. 利用 Prometheus 实现对 MinIO 集群的监控与预警。为了方便您实际操作,本文末尾提供了所有部署资源清单的...
七牛云cdn和对象存储配置SSL证书的教程
若使用的是对象存储服务Kodo,前往“空间管理”并找到相应的存储空间。点击“域名”选项,找到与自定义CDN绑定的域名,点击“详情”以进入配置页面。在“HTTPS配置”部分,启用HTTPS功能,同样从“已有证书”列表中选择您的SSL证书,并勾选“强制HTTPS访问”。稍等片刻,等待5-10分钟后,对象存储的HTTPS加密...
管理软件有哪些好的推荐?
3、平台采用高可用性架构,通过nginx实现负载均衡、zuul作为网关服务。并且平台分成运行时服务、设计时服务、授权时服务,不同服务执行不同工作,以保证平台性能处于最好状态。 二、提供源代码 1、提供全源码交付机制,解决后顾之忧:平台可以提供全部源码,保障用户在不同的应用阶段、不同层次和不同规模的服务需求都能得到...
nginx部署java项目?
如何平滑部署JavaWeb项目,让客户端不掉线1.JavaWeb应用需要改造成无状态的。2.用户Session数据一定不要保存在Java应用中,重启或者crash都会导致会话失效。3.常见的用户Session存储使用Memcached集群,Redis有点搭耐乱大材小用了。4.反向代理是知档用户请求的第亩世一站,推荐nginx。5.应用部署的第一步...
使用容器搭建简单可靠的容器仓库
对于无需身份验证的容器仓库,可将配置保存为docker-compose.yml,执行docker-compose up -d以启动无需身份认证的容器仓库。对于数据可靠性需求,可查阅关于storage配置章节,将存储配置至可靠公有云服务,或使用MinIO搭建私密S3对象存储。配置Docker Client使用HTTPS访问仓库时,需在daemon.json中添加相关配置...
MinIO-0004-核心运维概念-部署架构
对象在需要时自动重建,确保请求处理对应用透明。分布式拓扑:每个MinIO服务器都能映射整个部署,允许应用程序灵活地连接和操作任何节点。负载均衡:推荐使用外部负载均衡器来管理连接,保持部署的扩展性,如使用Nginx实现负载均衡。存储扩展:通过增加独立节点的池,可以扩展存储空间,但需确保正确处理跨节点的...
Minio 集群生产环境部署示例
使用 Nginx 作为反向代理安装 Nginx配置 Nginx启动 Nginx7. 安全配置进行安全配置以保护 MinIO 集群。使用 HTTPS生成 SSL 证书配置 MinIO 使用 HTTPS在每个节点的/etc/minio/minio.conf 文件中添加:配置防火墙8. 监控和日志使用 MinIO 控制台和日志来监控集群状态。启用 MinIO 控制台通过配置文件/etc/...
开源项目蘑菇博客如何集成Minio对象存储服务器
蘑菇博客目前支持了本地文件存储、七牛云存储以及Minio对象存储服务。每种存储服务都有其优缺点,接下来我们一起来看看。首先,直接将图片保存到服务器的硬盘(例如使用Nginx做静态资源映射)是一种简单的方法,但可能面临性能瓶颈和扩展性问题。接着,使用分布式文件系统(如FastDFS)可以实现横向扩展,但...