背景介绍
在某些场景会需要为OSS提供一个固定IP提供给用户访问,比如客户要求提供OSS固定IP进行客户层面的白名单授权,阿里云的OSS提供的是域名方式访问的而域名背后对应的IP是动态的不可控的,在OSS有维护或者遭受网络攻击等场景都会更换IP,所以阿里云服务端层面是无法固定OSS的IP的。
面对这种场景,如果我们不能给客户提供一个固定的OSS IP 可能会导致客户无法给访问我们的资源带来一系列问题。所以针对这种场景我们可以使用nginx反向代理来实现。
实现逻辑
首先在阿里云置备两台ECS,在ECS上搭建nginx,nginx最好做成集群可以增加稳定性。然后可以使用阿里云的公网SLB作为访问入口
nginx配置文件如下
server {
listen 9101; # 设定监听端口
location / {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
if ($args ~* (.*)h_[0-9]+\,w_[0-9]+\?rs=([0-9]+)_([0-9]+)*) {
set $args $1h_$3,w_$2;
}
proxy_pass http://xxxx.oss-cn-hangzhou-internal.aliyuncs.com;
proxy_ignore_client_abort on;
}
}
SLB 配置如下
需购买一个阿里云公网SLB
在SLB创建虚拟服务器组,将监听端口以及自建的nginx服务器添加进去
然后添加监听,将SLB的80端口转发至后端服务器组
验证没问题后 就可以把SLB的公网IP提供给客户了