如何应用OSS的内网地址

一、各网络环境下如何应用OSS的内网地址
只有同区域的ECS才能内网链接OSS,跨账户的ECS与OSS也能内网互连。而ECS分为经典网络ECS及VPC网络ECS,经典网络ECS要内网链接OSS得调用OSS经典网络内网地址:bucketname. 内网Endpoint,内网endpoint格式一般为: region-internal.aliyuncs.com;VPC网络ECS要内网连接OSS得调用OSSVPC内网地址:bucketname. VPC网络Endpoint ,VPC网络endpoint格式一般为:vpc100 -region.aliyuncs.com;其中 region可以为oss-cn-hangzhou、oss-cn-beijing、oss-cn-shanghai、oss-cn-shenzhen等等; OSS不同区域不同网络环境(外网/VPC/经典网络)的endpoint不同,OSS开通Region和Endpoint对照表参考: OSS开通Region和Endpoint对照表

如何获取OSS的地址
1) 可以通过OSS开通Region和Endpoint对照表获取对应区域对应网络环境oss的endpoint,通过bucketname.endpoint 拼接得到;
2) 控制台获取bucket的地址;
阿里云控制台—OSS—选择具体bucket—概览中显示了bucket的地址

二、站点中如何内网应用OSS的资源
存在客户在站点页面中直接应用object的内网URL,如http://ali.oss-cn-hangzhou-internal.aliyuncs.com/1.jpg, 站点访问异常,由于客户的用户打开站点是在其本地PC上打开的,相当于本地PC直接请求了OSS的内网,而OSS的内网只能同区域的ECS才能内网访问,客户的用户本地PC如果为非ECS网络环境,那么网络就不可达,访问异常了的;如果客户要在站点中直接内网应用oss的资源

如何在站点中内网应用OSS资源
客户的站点必须部署在与OSS同区域的ECS上,实现方式参考如下
1) Web端发起请求到ECS,ECS解析请求,得到web 端要访问的object名称,及bucket名称,ECS集成OSS的SDK或者API,调用SDK或者API获取OSS的资源,返回给web端;
OSS SDK参考: OSS SDK
API操作参考:OSS API操作

2) Web端发起请求站点某个目录下的URL,该站点目录设置反向代理,代理到OSS内网;
站点服务器ECS接收到请求,内网请求OSS资源,返回数据给Web端;
反向代理配置:站点域名绑定bucket,但不需要cname 解析到bucket的公网地址上;
站点某个目录配置反向代理配置,代理到OSS的内网地址上
Nginx反向代理配置类似如下

server {
listen       80 ; #default_server;
server_name  www.a.com;
location / {
root /alidata/www/ www-a-com/;
proxy_pass http://aialiyun.oss-cn-hangzhou-internal.aliyuncs.com/;
}
}

Bucket绑定域名看: 自定义域名绑定

三、SDK如何内网应用OSS的资源
SDK初始化client的时候,endpoint传入oss内网地址即可,oss内网地址获取看《各网络环境下如何应用OSS的内网地址》
1)Java

String endpoint = "http://oss-cn-hangzhou-internal.aliyuncs.com";
// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 创建OSSClient实例
OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);

参考: Javasdk 初始化client
2)PHP

$accessKeyId = "<您从OSS获得的AccessKeyId>";
$accessKeySecret = "<您从OSS获得的AccessKeySecret>";
$endpoint = "<您选定的OSS数据中心访问域名,例如http://oss-cn-hangzhou-internal.aliyuncs.com>";
try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
} catch (OssException $e) {
    print $e->getMessage();
}

参考:PHP SDK初始化client

3)Python

auth = oss2.Auth('您的AccessKeyId', '您的AccessKeySecret')
endpoint = 'http://oss-cn-hangzhou-internal.aliyuncs.com' # 假设Bucket处于杭州区域
bucket = oss2.Bucket(auth, endpoint, '您的Bucket名')
参考: https://help.aliyun.com/document_detail/32028.html?spm=5176.doc32027.6.680.9xhved
4)Net sdk
const string accessKeyId = "<your AccessKeyId>";
const string accessKeySecret = "<your AccessKeySecret>";
const string endpoint = "http://oss-cn-hangzhou-internal.aliyuncs.com";
var ossClient = new OssClient(endpoint, accessKeyId, accessKeySecret);

参考: Python SDK初始化client
5)C

    options->config = oss_config_create(options->pool);
    aos_str_set(&options->config->endpoint, "http://oss-cn-hangzhou-internal.aliyuncs.com");
    aos_str_set(&options->config->access_key_id, "<您的AccessKeyId>");
    aos_str_set(&options->config->access_key_secret, "<您的AccessKeySecret>");
    options->config->is_cname = 0;
    options->ctl = aos_http_controller_create(options->pool, 0);

参考: C SDK初始化client

时间: 2024-10-26 15:47:28

如何应用OSS的内网地址的相关文章

软件-路由表中全是内网地址

问题描述 路由表中全是内网地址 在学校里用学习软件做的时候,是有很多外网地址的啊? 解决方案 你的计算机通过NAT连接到你的路由器上,然后连接到Internet.而不是直接连接到Internet的.

如何判断iph.AddressList[]里哪个是外网地址那个是内网地址?

问题描述 IPHostEntryiph=newIPHostEntry();iph=Dns.GetHostEntry("");上面执行完后,如果已通过ADSL拨号连上internet,iph.AddressList[]数组回有两个地址,一个是本地地址,一个是外网地址,但我如何判断哪个是外网地址呢?感激涕零 解决方案 解决方案二:本地的应该是192.168.xxx.xxx的吧外网的应该就不是这样的,你把得到IPAddress[]进行判断一下看看解决方案三:第一个是本地,第二个外网

asp实现检查ip地址是否为内网或者私有ip地址的代码分享_应用技巧

asp检查ip地址是否为私有/内网ip地址源代码. 内网/私有IP地址网段如下,还有127开头的回环地址: 10.0.0.0-10.255.255.255 172.16.0.0-172.31.255.255 192.168.0.0-192.168.255.255 实现代码: <% function IpToNumber(ip)'IP地址转为数字 arr=split(ip,".") IpToNumber=256*256*256*clng(arr(0))+256*256*clng(a

ipconfig-外网怎样访问内网IP上的端口

问题描述 外网怎样访问内网IP上的端口 家里电脑IP地址115.175.233.xx 命令行输入ipconfig看到: 无线局域网适配器 -> IPv4地址是192.168.1.102,子网掩码是255.255.255.0,默认网关192.168.1.1 以太网适配器 -> IPv4地址是192.168.231.1,掩码一样 我用本地端口55321开了个服务器,怎样可以通过外网访问? telnet 155.175.233.xx 55321 连不上.怎样把NAT映射到本机 解决方案 ISP做了N

【廉环话】安全入侵应对实务—内网侦查篇

[51CTO.com原创稿件]朋友们,您是否已经成功逃离了上个月勒索软件的余震,Not WannaCry anymore?您是否又回归到了平静有序的日常工作,就像美剧<西部世界>里的那些机器人演员一样,天天都重复着一个轮回呢?至少我现在就是这样的,每天忙于各种反复的事务性工作,就连刚刚过去的六一儿童节,都只能在朋友圈里去追忆. 还记得小时候,我最爱看的就是那部<黑猫警长>的动画片,直到现在工作得意的时候还会时常吟唱其主题歌-"眼睛瞪得像铜铃,射出闪电般的精明;耳朵竖得像天

利用被入侵的路由器迈入内网

去年开始利用路由器对目标内网进行渗透的方式方法开始研究,测试了一阵了.看到乌云之前有一篇翻译外国人的文章,讲路由器流量劫持的,利用条件苛刻,成效也不大.所以决定写一篇自己实测的例子. 0x01 控制路由器 现在只搞cisco的路由器,但是方法不限于cisco,华为,juniper什么的都可以. 这一步没有什么好的办法,我们利用分布式扫描抓到了一些路由器,再加上其他的漏洞,有了一定数量作为测试保证. 选择一台 cisco c800系列的小企业路由器(很老了) 图1 router version 进

socket编程 ping命令-socket编程——内网ping公网失败

问题描述 socket编程--内网ping公网失败 我电脑连的是铁通的公网,在做一个C/S socket编程.在我一台电脑上客户端和服务器之间可以正常发送数据,但是客户端放到别的可以上网的电脑上时就连不上了.我用ping命令检测过网络情况,基本上都ping不通.只有一次一个同学在公司用他的电脑ping通了,不过是单向的,我还是Ping不通他的,服务器和客户端之间还是发送不了数据.有哪位高手知道是什么原因?谢谢! 服务器端部分代码如下: //设定地址 serv.sin_addr.s_addr=ht

效果-双网卡 一个连内网 一个连外网,能同时上网

问题描述 双网卡 一个连内网 一个连外网,能同时上网 如题:两个网段 20和21 我的做法是添加路由: route?add?192.168.21.0?mask?255.255.255.0?192.168.21.250?metric?10 route?add?192.168.20.0?mask?255.255.255.0?192.168.20.250?metric?10 为什么不能同时上网呢.就是在内网就不能连外网..需要关闭内网的网卡才能连外网.连内网就需要关闭外网网卡.感觉写路由没效果.但是查

外网访问内网服务器【企业邮箱相关】

问题描述 外网访问内网服务器[企业邮箱相关] 大家好. 我在公司内网里架设了一个邮件服务器,地址是C 防火墙是深信服的,具体型号不明(多年了,而且型号上贴了标签,不好撕毁) 公司外网有两个IP,是A和B,但是是一个光纤.于是我在公司防火墙的wan口上分配了这两个IP 之后在地址转换中将除了C以外的内网地址nat给A(源地址转换),然后用目标地址转换将B转换到内网的C来实现外网访问内网的邮箱服务器. 现在的问题是,我通过外网telnet B 22,可以打开服务器,但是怎么也访问不到80端口打不开邮