成航先森 成航先森

成都航院计算机系一个学生的个人博客

 

建站分享

最新文章

建站分享
当前位置: 首页 » 建站分享 » COS对象存储和CI数据万象未开启CDN,但是却有CDN回源流量

COS对象存储和CI数据万象未开启CDN,但是却有CDN回源流量

编辑:狂族晨曦 来源:建站分享 日期:2022-06-10 阅读: 166 次 抢个沙发 百度已收录

发现的问题

对象存储简称COS,数据万象简称CI。

由于5月数据万象突然征收“CDN回源流量费”,由于先森图片请求量不大,且还是需要使用数据万象的图片处理功能,所以先森在CDN->COS的中间加了一个Nginx做反向代理,由于Nginx所在的服务器和先森的COS存储桶是同地域的,所以服务器到COS的流量是内网,因此讲道理COS和CI都不会产生CDN回源流量了。

但是,先森过了几天又来看数据万象控制台,发现每天还是有产生CDN回源流量,先森这波就无语了,明明都没用CDN了,怎么还会有CDN回源流量呢,这不是无中生有么。

数据万象控制台 -1

数据万象控制台

问题原因定位

经过排查确认,是由于先森的Nginx直接透传了CDN的回源请求,导致COS和CI判定流量是来自CDN回源。。。

先森在服务器上进行抓包确认。

同一个图片,CDN回源到CVM服务器:

CDN回源到CVM服务器 -2

抓包:CDN回源到CVM服务器

CVM回源到COS:

抓包:CVM回源到COS -3

抓包:CVM回源到COS

可以看到,CDN回源到CVM比较有特殊性的请求头是以下两个,在CVM请求到COS时也是带着的:

 X-NWS-LOG-UUID: 630013543448005765
 X-Tencent-Ua: Qcloud

那么,就要想办法把这两个请求头去掉,不让其透传。

去除Nginx请求头

先森百度了一下,Nginx内置的模块中没有删除指定请求头的,只能编译增加headers-more-nginx-module模块。

先森图省事,服务器安装了宝塔,Nginx是通过宝塔安装的。看了一下,宝塔安装的Nginx不像Redis等软件,可以在网页上动态添加支持模块,只能命令行编译添加模块。

当然编译之前需要看一下宝塔的Nginx会不会已经很好心的帮忙编译了headers-more-nginx-module。

查看Nginx已经安装的模块

 ./sbin/nginx -V
 nginx version: nginx/1.22.0
 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
 built with OpenSSL 1.1.1o  3 May 2022
 TLS SNI support enabled
 configure arguments: --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module

肉眼可见的,并没有headers-more-nginx-module模块,只能重新编译一下了。

由于宝塔编译的Nginx没有留configure文件,所以先森参考这篇文章:宝塔面板安装的Nginx(已安装)如何添加echo-nginx-module模块,操作了一下编译。

其中,有一些点需要注意一下。

1、模块的下载地址,下载后解压得到的目录,就是编译时指定的目录:

 wget https://github.com/openresty/headers-more-nginx-module/archive/refs/tags/v0.33.tar.gz
 tar -zxvf v0.33.tar.gz -C /www/server/module/
 ls /www/server/module/headers-more-nginx-module-0.33

2、下载的模块目录不要放在/www/server/nginx目录下,使用先森参考的这个方法宝塔在更新Nginx时会清空该目录;

修改反向代理配置文件

进入宝塔的网站配置页,找到反向代理的配置文件,增加想要去除的请求头即可。

 more_clear_input_headers "X-Tencent-Ua";
 more_clear_input_headers "X-NWS-LOG-UUID";

修改反向代理配置 -4

修改反向代理配置

重新抓包确认请求头没有透传

修改好了之后,重新抓个包,看看请求头还有没有透传。

CDN回源到CVM服务器,可以看到这两个请求头还是在的(肯定在,先森又没删)。

CDN回源到CVM -5

CDN回源到CVM

然后再看CVM服务器访问COS的请求头,指定清除的两个请求头已经没有了。

CVM访问COS -6

先森只是刚改好,由于数据万象的控制台对于“CDN回源流量”的监控粒度是1天,所以起码要明天才能看到效果,希望有效。

标签:
除特别注明外,本站所有文章均为成航先森 www.capjsj.cn 原创,本文共2529个字
转载请注明出处来自https://www.capjsj.cn/cos_ci_cdn_last.html
已有 0 位"计工"发布了激烈的评论,还有N多人围观笑而不语评论
的头像
欢迎发表评论
取消评论

表情
疑问调皮伤心抠鼻黑线微笑可爱奸笑震惊吓到了撇嘴大兵忍不住笑笑狂骂狂怒噢?鼓掌酷⊙﹏⊙b汗鄙视大哭嘿嘿

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
官方微信
发表评论 返回顶部