这两天开发有一个需求:请求一个前端静态页面转发到后端服务上面,据说阿里云oss搭建cdn可以实现这个功能,以前都是自己做一个nginx proxy_pass 转发过去,静态页面好做,转发url阿里云上面也有参考文档,那就尝试做一下。
需求:访问前端静态地址http://ts.xy.com 调用http://test.ap.abc.com的服务端口。
具体如下:
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://test.ap.abc.com ;
结果:失败,可能配置的有问题。没转发出去,最终在服务器上面搭建nginx站点做代理转发,在此记录一下调试过程。
定好业务用途开始做oss bucket,仅仅做测试就不用考虑数据冗余安全方面的事情,定好名称和公共读权限以后下一步就完事。如下:
建好bucket以后浏览一下会默认生成url类似oss-cn-beijing.aliyuncs.com,可以内网传说文件省流量,外网传送是需要流量计费的。
数据管理-静态页面里面设置默认首页index.html和默认404页面,404报错时候会自动跳转到首页。
下一步bueket 配置-域名管理,是否需要绑定域名,系统自动给的域名因为安全问题,访问的页面都是下载页面没浏览的,访问首页会是下载到index.html文件。绑定自定义域名以后应该能预览网站页面。绑定自己网站以后会自动给一个cname值,在域名上面做解析生效就可以访问站点了,做cdn需要再cdn那边源站绑定到oss的域名后面不做特殊优化基本上默认下一步就可以,最后做cname记录解析生效即可,至此静态网站http://ts.xy.com做好。
接下来做转发:
rewrite ^/api/(.*)$ /$1 break; #重写
proxy_pass http://test.ap.abc.com ;
数据安全–跨域设置:首先oss做跨域设置,最初允许headers针对域名做了设置,后面一直没成功索性设置*。
接下来针对cdn做跨域设置和配置headers
缓存配置–节点http响应头设置:
缓存配置–访问url改写:
根据阿里云文档:
https://help.aliyun.com/zh/cdn/user-guide/create-an-access-url-rewrite-rule
做了一下配置
跳转访问url配置:
最终提示:
MethodNotAllowed
The specified method is not allowed against this resource
问题原因:使用了OSS不支持的方法来请求访问资源。
解决方案:请使用API概览中支持的请求方式进行重试。
如果用302Redirect转发倒是可以跳转到 test.ap.abc.com,单纯跳转到url倒是可以实现,具体业务也是出错。于是乎烂尾工程,最终nginx搭建站点跳转访问业务侧。