基于Ubuntu的ECS实例实现OSS反向代理

news2024/9/20 15:50:12

阿里云OSS的存储空间(Bucket)访问地址会随机变换,您可以通过在ECS实例上配置OSS的反向代理,实现通过固定IP地址访问OSS的存储空间。

背景信息

阿里云OSS通过Restful API方式对外提供服务。最终用户通过OSS默认域名或者绑定的自定义域名方式访问,但是在某些场景下,用户需要通过固定的IP地址访问OSS:

  • 某些企业由于安全机制,需要在出口防火墙配置策略,以限制内部员工和业务系统只能访问指定的公网IP,但是OSS的Bucket访问IP会随机变换,导致需要经常修改防火墙策略。

  • 金融云环境下,因金融云网络架构限制,金融云内网类型的Bucket只能在金融云内部访问,不支持在互联网上直接访问金融云内网类型Bucket。

针对以上问题,您可以通过在ECS实例上搭建反向代理的方式访问OSS。

 

操作步骤

  1. 创建一个ECS实例。

    本文以和对应Bucket相同地域的Ubuntu 18.04 64位系统的ECS实例为例。

    如何创建ECS实例,请参见选购ECS实例。

  2. 连接ECS实例。

    如何连接ECS实例,请参见 连接ECS实例。

  3. 执行以下命令更新apt源。

    sudo apt-get update
  4. 执行以下命令安装Nginx。

    sudo apt-get install nginx
    Nginx文件的默认安装位置如下。
    目录说明
    /usr/sbin/nginx存放主程序
    /etc/nginx存放配置文件
    /usr/share/nginx存放静态文件
    /var/log/nginx存放日志
  5. 执行以下命令打开Nginx配置文件nginx.conf。

    sudo vi /etc/nginx/nginx.conf
  6. 参考以下说明修改nginx.conf文件中的HTTP模块。

    重要

    • 本文仅提供演示环境。考虑到您的数据安全,强烈建议您在实际使用环境中配置HTTPS模块。如何配置,请参见Nginx或Tengine服务器配置SSL证书。

    • 以下配置方式只能代理访问一个Bucket。

    server {
            listen 80;
            server_name 47.**.**.73; 
    
            location / {
                proxy_pass http://bucketname.oss-cn-beijing-internal.aliyuncs.com;            
                proxy_http_version 1.1;
                proxy_set_header Host $http_host;
                proxy_connect_timeout 15s;
                proxy_read_timeout 15s;
                proxy_send_timeout 15s;
                proxy_set_header Connection "";
                proxy_buffering off;
                proxy_request_buffering off;
         }  
    }

    参数

    说明

    server_name

    对外提供反向代理服务的IP,即ECS实例的外网地址。

    proxy_pass

    跳转的域名。

    • 当ECS实例与Bucket在同一地域时:填写目标Bucket的内网访问域名。关于内网访问域名的更多信息,请参见通过内网访问OSS。

    • 当ECS实例与Bucket不在同一地域时:填写目标Bucket的外网访问域名。关于外网访问域名的更多信息,请参见通过外网访问OSS。

    • 您的用户需通过浏览器预览Bucket中的图片或网页文件:因OSS的安全设置,当使用默认域名通过浏览器访问OSS中的图片或网页文件时,会直接下载。所以,如果您的用户需通过浏览器预览Bucket中的图片或网页文件,需为Bucket绑定自定义域名,并在此项中添加已绑定的域名。如何绑定自定义域名,请参见绑定自定义域名。

    proxy_set_header Host

    添加此项时,Nginx会在向OSS请求的时候,将$host替换为ECS的访问地址。

    遇到以下情况时,您需要添加此项。

    • 遇到签名错误问题。

    • 如果您的域名已解析到ECS实例的外网上,且您的用户需要通过浏览器预览Bucket中的图片或网页文件。您可以将您的域名绑定到ECS实例代理的Bucket上,不配置CNAME。在该情况下,proxy_pass项可直接配置Bucket的内网或外网访问地址。如何绑定自定义域名,请参见绑定自定义域名。

    说明

    该选项针对自定义域名请求到代理服务器的场景。如果您使用IP地址直接请求访问代理服务器, 您需要在nginx.conf文件中注释proxy_set_header Host $host

    proxy_connect_timeout

    设置与后端服务器(如 OSS)的连接超时时间。此超时配置决定了 Nginx 在建立与后端服务器的连接时,最长等待的时间。如果超时,Nginx 将返回错误响应。

    proxy_read_timeout

    控制 Nginx 从后端服务器读取响应数据的超时时间。如果在此时间内未能从后端服务器读取到数据,Nginx 将返回错误响应。这对于处理可能响应时间较长的请求非常重要。

    proxy_send_timeout

    设置 Nginx 向后端服务器发送请求数据的超时时间。此参数确保 Nginx 在等待请求数据发送到后端服务器期间保持连接,直到超时或连接显式关闭。

    proxy_set_header Connection

    设置代理请求头中的 Connection 字段为空字符串,表示在代理请求时,Nginx 不会添加 Connection 头部。这样可以避免 HTTP/1.1 持久连接问题,确保与后端服务器的连接处理正确。

    proxy_buffering

    控制Nginx是否缓存从后端服务器接收到的数据。设置为off意味着Nginx将立即转发数据给客户端,而不会进行缓存,这可以降低延迟,但也可能增加带宽消耗。

    proxy_request_buffering

    决定 Nginx 是否在将请求体转发给后端服务器之前等待整个请求体完全接收。设置为off表示Nginx将开始接收数据后立即转发,无需等待整个请求体接收完成,这有利于实时性要求较高的应用场景。

  7. 执行以下命令进入Nginx主程序文件夹。

    cd /usr/sbin/
  8. 执行以下命令启动Nginx。

    sudo ./nginx
  9. 开放ECS实例的TCP 80端口。

    Nginx默认使用80端口,您需在ECS的安全组配置中,允许用户访问TCP 80端口。

    如何配置,请参见添加安全组规则。

  10. 测试使用ECS外网地址加文件访问路径访问OSS资源。

    本文跳转的域名以OSS默认域名为例。使用本地浏览器访问时,OSS资源默认会被下载。如果您需要实现访问OSS资源时预览,您在配置proxy_pass时需要使用自定义域名。

    说明

    如果访问的文件读写权限为私有,文件URL中还需要包含签名信息。详情请参见签名版本1。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2149321.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

掌握Spring Boot数据库集成:用JPA和Hibernate构建高效数据交互与版本控制

在现代应用开发中,数据库操作是核心环节之一。Spring Boot提供了简化数据库集成的强大工具,而JPA(Java Persistence API)和Hibernate是两种非常流行的ORM(对象关系映射)框架,可以帮助我们将对象…

CLI示例(V2R8至V2R19C00版本):直连二层组网直接转发【AP+上层网络,增加AP下行口有线接入】

CLI示例(V2R8至V2R19C00版本):直连二层组网直接转发【AP+上层网络,增加AP下行口有线接入】 适用于:V200R008至V200R019C00版本的AC,以及有空闲以太网口的AP。 说明:本示例基于“直连二层组网直接转发【AP+AC+出口网关】”场景来介绍如何增加AP下行口有线接入。 业务需求…

Vue使用代理方式解决跨域问题

1、解决跨域问题 如果 Vue 前端应用请求后端 API 服务器,出现跨域问题(CORS),如下图: 解决方法:在 Vue 项目中,打开 vue.config.js 配置文件,在配置文件中使用代理解决跨域问题。 …

怎么找到抖音爆款内容,进行扩散传播?

企业如果想做好抖音平台的品牌营销,需要时刻监测抖音爆款内容并进行加热放大,据此快速创新和改进内容,才能短期提高品牌相关内容的曝光量,快速拉升品牌声量。怎么去找到抖音的爆款内容或者是值得品牌关注的优质内容,主…

印尼有几百种语言,初学者要怎么开始学习?《印尼语翻译通》app或许可以帮助你!印尼语零基础入门学习。

快速翻译,准确高效 采用最新技术,提供精准翻译。翻译结果符合中国人习惯。 体验印尼文化 学习地道印尼语,贴近当地文化。 旅游和工作的好帮手 提供旅游和商务用语,沟通无障碍。 学习印尼语的良师 文本和语音翻译,…

Spark-RDD持久化

一、Spark的三种持久化机制 1、cache 它是persist的一种简化方式,作用是将RDD缓存到内存中,以便后续快速访问,提高计算效率。cache操作是懒执行的,即执行action算子时才会触发。 2、persist 它提供了不同的存储级别&#xff0…

解锁数字转型新纪元:Vatee万腾平台,您的智能加速与策略智库

在数字经济时代的大潮中,企业的数字化转型已不再是选择题,而是必答题。面对这一挑战,Vatee万腾平台以其卓越的技术实力和前瞻性的战略视野,成为了众多企业加速数字化转型、实现智能化升级的得力助手和智囊团。 加速转型&#xff…

人工智能时代:程序员如何在变革中保持核心竞争力?

随着人工智能生成内容(AIGC)领域的快速发展,大语言模型如ChatGPT、Midjourney、Claude等层出不穷,AI辅助编程工具迅速普及,程序员的工作方式正在经历翻天覆地的变革。面对这一趋势,有人担心AI可能取代部分编…

嵌入式处理器详解

文章目录 一、CPU、MPU、MCU、SoC、Application Processors的概念1.CPU (Central Processing Unit)2.MPU (Micro Processor Unit)3.MCU (Micro Controller Unit)4.SoC(System on Chip)5.Application Processors 二、哈弗架构与冯诺伊曼架构三、XIP概念四、嵌入式系统硬件组成五…

【架构设计】多级缓存:应用案例与问题解决策略

【架构设计】多级缓存:应用案例与问题解决策略 多级缓存系统的工作原理及其在提升应用性能方面的关键作用。通过对比本地缓存与分布式缓存的特点 | 原创作者/编辑:凯哥Java | 分类:架构设计系列教程 多级缓存…

模拟电路分析基础知识总结笔记(电子电路分析与设计前置知识)

必备条件 电子电路的直流分析电子电路的正弦稳态分析RC电路的瞬态分析戴维南定理和诺顿定理拉普拉斯变换(看不懂,根本看不懂) 电子电路的直流分析 欧姆定律 ​ 在恒定温度下,电压与电流成正比,电压与电阻成正比&am…

Java-数据结构-优先级队列(堆)-(二) (゚▽゚*)

文本目录: ❄️一、PriorityQueue的常用接口: ➷ 1、PriorityQueue的特性: ➷ 2、使用PriorityQueue的注意: ➷ 3、PriorityQueue的构造: ☞ 1、无参数的构造方法: ☞ 2、有参数的构造方法: …

DCMM介绍

目录 一、介绍 二、核心摘要 三、体系大纲 四、能力评估 1、过程与活动 2、等级判定依据 3、访谈对象 一、介绍 通过阅读本书,您将洞悉国际数据框架体系,并掌握国家对于数据管理能力的权威评估标准与等级划分。本书详尽阐述了数据管理领域的八大核心能力域,以及这八大…

Flask、Werkzeug 和 WSGI 间的关系

一.Flask、Werkzeug和 WSGI 关系 1.WSGI Web 架构 Flask 是一个基于 Werkzeug 和 Jinja2 模板引擎的轻量级 Web 框架。Werkzeug 是 Flask 的底层 WSGI 工具包,它提供了 WSGI 服务器、请求和响应对象、路由等基础功能,Flask 在此基础上构建了更高级的 W…

HelpLook VS GitBook,在线文档管理工具对比

在线文档管理工具在当今时代非常重要。随着数字化时代的到来,人们越来越依赖于电子文档来存储、共享和管理信息。无论是与团队合作还是与客户分享,人们都可以轻松地共享文档链接或通过设置权限来控制访问。在线文档管理工具的出现大大提高了工作效率和协…

性能调优

性能调优 应用程序在运行过程中经常会出现性能问题,比较常见的性能问题现象是: 通过top命令查看CPU占用率高,接近100甚至多核CPU下超过100都是有可能的。请求单个服务处理时间特别长,多服务使用skywalking等监控系统来判断是哪一…

电子束光刻过程中的场拼接精度

以下内容如有错误,请不吝指教,感谢! 1、EBL为什么会出现场拼接误差,如何解决? ChatGPT 说: 在电子束光刻(EBL)过程中,SOI(硅绝缘体)芯片上出现*…

计算机毕业论文题目:设计与实现一个校园通知信息系统

设计与实现一个校园通知信息系统是一个涉及多个方面的复杂项目,它旨在提高信息传递的效率和准确性,确保学生、教师以及学校管理人员能够及时获取到重要的通知信息。以下是关于如何设计并实现这样一个系统的详细说明: 1. 需求分析 用户…

【高中数学/不等式/数学归纳法/等比数列】证明伯努利不等式(1+h)^n>1+nh的三种方式

【伯努利不等式】 (1h)^n>1nh (h>0,n为大于1的自然数) 【数学归纳法证法】 证明: n2时,(1h)^212hh^2>12h 不等式成立 n3时,(1h)^313h3h^2h^3>13h 不等式成立 假设nk时,有(1h)^k>…

机房三大网络拓扑图,太实用了

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 下午好,我的网工朋友。 通常来说,机房的三大网络拓扑图指的是星型拓扑、总线型拓扑和环形拓扑。 在实际的机房网络设计中…