阿里云OSS的存储空间(Bucket)访问地址会随机变换,您可以通过在ECS实例上配置OSS的反向代理,实现通过固定IP地址访问OSS的存储空间。
背景信息
阿里云OSS通过Restful API方式对外提供服务。最终用户通过OSS默认域名或者绑定的自定义域名方式访问,但是在某些场景下,用户需要通过固定的IP地址访问OSS:
某些企业由于安全机制,需要在出口防火墙配置策略,以限制内部员工和业务系统只能访问指定的公网IP,但是OSS的Bucket访问IP会随机变换,导致需要经常修改防火墙策略。
金融云环境下,因金融云网络架构限制,金融云内网类型的Bucket只能在金融云内部访问,不支持在互联网上直接访问金融云内网类型Bucket。
针对以上问题,您可以通过在ECS实例上搭建反向代理的方式访问OSS。
操作步骤
创建一个ECS实例。
本文以和Bucket相同地域的Windows Server 2019数据中心版64位中文版系统的ECS实例为例。
如何创建ECS实例,请参见选购ECS实例。
连接ECS实例。
如何连接ECS实例,请参见 连接ECS实例。
下载Nginx并解压。
本文以Nginx-1.19.2版本为例。
修改配置文件nginx.conf。
重要本文仅提供演示环境。考虑到您的数据安全,强烈建议您在实际使用环境中配置HTTPS模块。如何配置,请参见在Nginx或Tengine服务器安装SSL证书。
以下配置方式只能代理访问一个Bucket。
进入conf文件夹,使用记事本打开nginx.conf文件。
修改配置文件内容。
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; keepalive_timeout 65; server { listen 80; server_name 47.**.**.43; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location / { proxy_pass http://bucketname.oss-cn-hangzhou-internal.aliyuncs.com; #proxy_set_header Host $host; } } }
参数
说明
server_name
对外提供反向代理服务的IP,即ECS实例的外网地址。
proxy_pass
跳转的域名。
proxy_set_header Host
添加此项时,Nginx会在向OSS请求的时候,将$host替换为ECS的访问地址。
遇到以下情况时,您需要添加此项。
遇到签名错误问题。
如果您的域名已解析到ECS实例的外网上,且您的用户需要通过浏览器预览Bucket中的图片或网页文件。您可以将您的域名绑定到ECS实例代理的Bucket上,不配置CNAME。在该情况下,proxy_pass项可直接配置Bucket的内网或外网访问地址。如何绑定自定义域名,请参见绑定自定义域名。
说明该选项针对自定义域名请求到代理服务器的场景。如果您使用IP地址直接请求访问代理服务器, 您需要在nginx.conf文件中注释
proxy_set_header Host $host
。
返回Nginx主程序文件夹,双击nginx.exe启动Nginx。
开放ECS实例的TCP 80端口。
Nginx默认使用80端口,您需在ECS的安全组配置中,允许用户访问TCP 80端口。
如何配置,请参见添加安全组规则。
测试使用ECS外网地址加文件访问路径访问OSS资源。
本文跳转的域名以OSS默认域名为例。使用本地浏览器访问时,OSS资源默认会被下载。如果您需要实现访问OSS资源时预览,您在配置proxy_pass时需要使用自定义域名。
说明如果访问的文件读写权限为私有,文件URL中还需要包含签名信息。详情请参见在URL中包含签名。
相关文档
- 本页导读 (1)