通过Nginx反向代理访问OBS
背景
一般情况下,用户会通过OBS提供的桶访问域名(例如https://bucketname.obs.cn-north-4.myhuaweicloud.com)或者绑定的自定义域名来访问OBS。
但在某些场景下,用户需要通过固定的IP地址访问OBS,例如:某些企业出于安全考虑,对于可访问的外部地址需要设置黑白名单,而这个时候对于OBS的访问则需要一个固定的IP地址。同样出于安全考虑,华为云OBS桶访问域名通过DNS解析的IP地址是会发生变化的,所以用户无法获取某个桶长期有效的固定IP地址。
此时,可以通过在ECS上搭建Nginx反向代理服务器,来实现通过固定IP地址访问OBS。
原理介绍
本实践将Nginx部署在ECS上,搭建Nginx反向代理服务器。用户对代理无感知,只需要将请求发送到反向代理服务器,然后由反向代理服务器向OBS获取数据,再返回给用户。反向代理服务器和OBS对外看做一个整体,仅暴露代理服务器的IP地址,隐藏了OBS真实的域名或IP地址。

配置步骤
- 在ECS上安装Nginx
- 登录用于搭建Nginx反向代理服务器的ECS。
- 使用wget命令,下载对应当前操作系统版本的Nginx安装包。此处以CentOS 7.6版本的操作系统为例。
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
- 执行以下命令,建立Nginx的yum仓库。此处以CentOS 7.6版本的操作系统为例。
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
- 执行以下命令,安装Nginx。
yum -y install nginx
- 执行以下命令,启动Nginx并设置开机启动。
systemctl start nginx systemctl enable nginx
- 在任意终端使用浏览器访问“http://ECS弹性公网IP地址”,显示如下图所示,说明Nginx安装成功。图2 Nginx安装成功
- 修改Nginx配置文件,反向代理OBS桶
- 执行以下命令,打开“default.conf”配置文件。
vim /etc/nginx/conf.d/default.conf
- 按“i”键进入编辑模式,修改“default.conf”配置文件。
server { listen 80; server_name **.**.**.**; #此处填写ECS弹性公网IP地址 location / { proxy_pass https://nginx-obs.obs.cn-north-4.myhuaweicloud.com; #此处填写OBS桶访问域名,以http://或https://开头 index index.html index.htm ; }
表1 配置文件参数说明 参数
说明
server_name
提供反向代理服务的IP地址,即需要暴露给终端用户访问的固定IP地址。
此处填写搭建Nginx反向代理服务的ECS弹性公网IP地址,即当前登录的ECS弹性公网IP地址。
proxy_pass
被代理服务器的地址。
此处填写前提条件获取的OBS桶的访问域名,注意需要以http://或https://开头,例如:
https://nginx-obs.obs.cn-north-4.myhuaweicloud.com
- 按“Esc”,输入“:wq”保存并退出。
- 执行以下命令,测试Nginx配置文件状态。
nginx -t
- 执行以下命令,重启Nginx服务使配置生效。
systemctl stop nginx systemctl start nginx
- 执行以下命令,打开“default.conf”配置文件。
- 配置OBS桶策略,允许Nginx代理服务器的IP地址访问OBS
为了桶中数据的安全,建议在私有桶(无任何桶策略)的基础上配置以下两条桶策略,仅允许Nginx代理服务器的IP地址访问OBS桶。
- 在OBS管理控制台左侧导航栏选择“对象存储”。
- 在桶列表单击待操作的桶,进入“概览”页面。
- 在左侧导航栏,单击“访问权限控制 > 桶策略”。
- 单击“创建桶策略”。
- 在桶策略模板第一行,单击右侧的“自定义创建”。
- 配置如下参数。
表2 桶策略参数配置 参数
说明
策略配置方式
可视化视图
策略名称
自定义
策略内容
效果
允许
被授权用户
- 授权用户:匿名用户
- 用户策略:包含以上用户
资源
- 资源范围:同时选择当前桶和桶内对象
- 资源策略:包含以上资源
动作
- 选择动作:Get*和List*
- 操作策略:包含以上动作
条件
- 条件运算符:IpAddress
- 键:SourceIp
- 值:
- 如果ECS使用华为云内网DNS,则取值为100.64.0.0/10
- 如果ECS使用公网DNS,则取值为ECS的弹性公网IP地址
- 单击右下角的“配置确认”。
- 单击右下角的“创建”,完成桶策略创建。
- 验证反向代理配置
在任意终端使用ECS弹性公网IP地址+对象名访问OBS资源,如果能正常访问,则说明配置成功。
例如访问http://ECS弹性公网IP地址/ocean.jpg
图3 使用固定IP地址访问OBS资源
