内容分发网络 CDN
内容分发网络 CDN
- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 最佳实践
- API参考
- SDK参考
- 场景代码示例
-
常见问题
-
功能咨询
- 什么是全站加速(WSA)?
- CDN支持哪些业务类型?
- CDN支持中国大陆境外或全球加速吗?
- CDN支持DNS,HTTPDNS,IP302这三种调度方式吗?
- CDN支持哪些协议?
- CDN点播加速支持HLS和RTMP协议吗?
- CDN能否区分用户使用电脑端还是手机端访问?
- CDN支持针对网站单个页面加速吗?
- CDN是否支持二进制文件加速?
- CDN支持二级域名加速么?
- CDN是否可以对网站的Post请求进行加速?
- CDN是否支持直播加速?
- CDN有速度限制吗?
- CDN能否加速本地访问购物网站的速度从而抢购商品?
- CDN支持哪些源站类型?
- 华为云CDN是否支持对中文域名的加速?
- 华为云CDN是否支持HTTP3.0?
- 华为云CDN是否支持对内容进行加密后再分发给用户?
- 华为云CDN支持内网加速吗?
- 华为云CDN可以提供所有的节点IP地址和回源IP地址吗?
- 是否支持CDN域名配置从现有账号迁移至华为云另一个账号?
- 加速静态和动态资源的原理是否一样?
- 如何停止CDN业务
- CDN上传文件有没有大小限制?
- CDN是否支持频次控制?
- CDN支持实时监控功能吗?
- CDN是否支持绑定HOST等固定IP访问的方式来提供服务?
-
使用咨询
- 如何通过项目来管控分配CDN的使用权限?
- 如何对IAM子账号开放CDN部分权限?
- CDN域名服务范围对源站服务器位置、备案是否有要求?
- CDN服务范围仅选择中国大陆或中国大陆境外,未加速区域的用户访问时会怎样?
- CDN是否支持部分地区加速,部分地区不加速?
- CDN流量和带宽的进制换算规则是什么?
- CDN是对网站所在的服务器加速,还是对域名加速?
- CDN支持添加泛域名作为加速域名吗?
- 中国大陆、中国大陆境外、全球服务范围的CDN加速之间有什么区别?
- 国外IP地址访问加速域名时,会通过哪个节点加速?
- 服务器在中国大陆境外,网站访问人群在中国大陆,该如何选择服务范围?
- 业务集中在一个城市,是否有必要使用CDN?
- 华为云CDN如何判断用户所属地区?
- 从其它服务商迁移CDN到华为云要怎么做?CDN如何切流?
- 同一个加速域名是否可以加速多个源站域名?
- 配置CDN后能否加速文件上传速度?
- 能否实现国内用户直接访问源站服务器,而国外用户接入CDN加速?
- 源站端口使用的自定义端口而非80端口,能否使用CDN?
- 源站在国内或者国外,可以直接使用全球加速吗?
- 源站为其他云服务厂商(非华为云)的对象存储桶,如何在CDN接入源站?
- 加速域名是否支持对指定线路的访问用户进行CDN加速?
- 加速域名备案过期了有什么影响?
- 加速域名和源站域名有什么区别?
- 接入CDN的加速域名和源站域名需要备案吗?
- 同一个加速域名下面有不同类型的内容(网站、视频点播、文件下载),能使用CDN进行加速吗?
- 开通了“企业项目”后,子账号调用接口时报错“无法获取domain id”
- CDN可以和直播加速共用域名吗?
-
购买计费
- CDN在哪些环节收费,如何收费?
- CDN受到恶意攻击会计费吗?
- CDN流量包相关问题汇总
- CDN是否可以看到单个加速域名的计费情况?
- CDN是否会对HTTP/HTTPS请求数计费?
- CDN从OBS拉取的流量是什么流量?
- 如何设置流量包剩余使用量预警?
- 如何设置余额预警阈值?
- 如何核对每月的CDN月结95带宽峰值计费情况?
- 为什么流量包中的流量使用量与统计分析中的流量显示存在差别?
- 为什么购买了流量包,还会扣除余额?
- 点播加速和文件下载加速收费一样吗?
- 什么是保留期?
- 配置全球加速后中国大陆和中国大陆境外所消耗的流量、带宽是否分开计费?
- 因欠费导致CDN服务不可用的情况排查
- 使用OBS桶作为源站且已购买OBS回源流量包,但CDN产生的回源流量未从OBS回源流量包中扣除
-
域名配置
- CDN是否支持配置带端口的加速域名?
- CDN加速域名可以用子域名吗?
- CDN加速域名的CNAME是否可以直接访问?
- CDN添加安全证书后,源站还需要配置证书吗?
- 审核未通过的域名还可以再修改吗?
- 多个加速域名是否可以使用同一源站IP地址?
- 使用OBS桶作为源站接入CDN加速,OBS域名能否作为加速域名?
- 网站服务在国内如何设置加速网站域名?
- 接入CDN的域名能否根据QPS(每秒请求数)进行限流?
- 华为云CDN是否支持加速经过VPN跳转的资源?
- 使用华为云CDN加速,域名解析是否必须在华为云?
- 同一个CDN加速域名能否同时支持国内和海外?
- 已经停用域名,更换域名解析,为什么访问加速域名还是会到CDN节点?
- 如果加速域名是泛域名,如何配置证书?
- HTTPS证书配置提交时提示“证书链不齐全”,如何进行证书链补齐?
- HTTPS证书配置提交时提示“证书格式不对”,如何进行PEM证书格式转换?
- HTTPS配置是否支持添加自签名证书?
- 开启HTTPS强制跳转后,为什么在浏览器内访问正常,但是通过api请求HTTP会导致post请求丢失参数?
- 配置HTTPS后还可以使用HTTP访问吗?
- 已接入CDN的加速域名备案过期怎么办?
-
缓存配置
- CDN节点的缓存多久会更新,会自动更新吗?
- CDN是否支持正则表达式设置缓存策略?
- CDN是否支持批量配置加速域名的缓存策略?
- CDN会缓存 404、403状态码吗?
- CDN有哪些默认的缓存配置?是否有效?
- 为什么全站加速域名的缓存命中率大于0?
- CDN缓存配置下目录路径指浏览器地址中的路径,还是服务器中文件的路径?
- 为什么CDN的缓存命中率较低?
- 为什么OBS桶删除了文件之后,用户还能通过CDN地址访问下载该文件?
- 如何设置缓存首页(根目录)?
- 如何判断CDN是否缓存命中?
- 在CDN控制台资源缓存过期时间设置为0,为何访问到的仍然不是最新内容?
- 华为云CDN是否支持octet-stream流文件的缓存?
- 缓存配置中配置缓存过期时间为365天,未过期,为什么有些文件能下载有些不能?
- 网站资源不需要缓存,需要直接从源站获取,该如何设置?
- 缓存可以指定目录,以及指定文件后缀吗?
- 域名被盗链,更换域名会影响之前的缓存吗?
- 资源全部预热,缓存过期时间为1年,为什么最近统计到回源流量?
- 如何保证CDN的内容和源站同步?
- 缓存配置为什么没有生效?
-
故障相关
- 域名未在华为云上接入过CDN,系统提示该域名已添加
- 配置HTTPS安全加速后,为什么访问加速域名不成功?
- 从CDN获取到的数据是旧的,没有更新缓存
- 访问CDN加速后的资源,返回状态码304
- 使用OBS私有桶做源站,创建授权委托失败
- 修改源站IP地址后,访问网页无法正常显示
- 访问失败,报Access-Control-Allow-Origin错误
- 添加CDN加速后,百度蜘蛛为什么抓取失败?
- 为什么OBS桶接入CDN后,访问域名会列出所有文件列表?
- 为什么CDN配置好以后,视频播放卡顿?
- 为什么CDN被禁用了?
- 为什么域名配置HTTPS后页面一直提示301?
- 为什么配置CDN加速后,ping加速域名出现超时?
- 配置CDN加速后,回源获取的资源不正确
- 配置CDN后,为什么首次访问很慢?
- 配置了CDN加速,为什么中国大陆境外无法访问?
- 使用CDN加速OBS桶文件后访问变成强制下载
- 域名添加失败怎么办?
- 刷新预热
- 安全相关
- 统计日志
- 回源相关
- 配额相关
-
功能咨询
- 故障排除
- WSA用户指南
- 视频帮助
- 文档下载
- 通用参考
本文导读
链接复制成功!
获取客户端真实IP
本章节介绍了不同类型的Web应用服务器(包括Tomcat、Apache、Nginx、IIS 6和IIS 7)如何获取客户端的真实IP,如果有此方面需求,可以参考本文进行配置。
背景信息
网站接入CDN加速后,源站服务器端从IP头部获取的用户访问IP不是客户端的真实IP。当您因为业务需要获取客户端真实IP时,可以通过配置网站服务器获取客户端的真实IP。
代理服务器(CDN、WAF等)在把用户的HTTP、WebSocket、WSS请求转到下一环节的服务器时,会在头部中加入一条“X-Forwarded-For”记录,用来记录用户的真实IP,其形式为“X-Forwarded-For:客户端的真实IP,代理服务器1-IP, 代理服务器2-IP,代理服务器3-IP,……”。
因此,您可以通过获取“X-Forwarded-For”对应的第一个IP来得到客户端的真实IP。
Nginx如何在访问日志中获取客户端真实IP
如果您的源站部署了Nginx反向代理,可通过在Nginx反向代理配置Location信息,后端Web服务器即可通过类似函数获取客户的真实IP地址。
- 根据源站Nginx反向代理的配置,在Nginx反向代理的相应location位置配置如下内容,获取客户IP的信息。
Location ^ /<uri> { proxy_pass ....; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
- 后端Web服务器通过类似函数获取客户的真实IP。
request.getAttribute("X-Forwarded-For")
Tomcat如何在访问日志中获取客户端真实IP
如果您的源站部署了Tomcat服务器,可通过启用Tomcat的X-Forwarded-For功能,获取客户端的真实IP地址。
- 打开“server.xml”文件(“tomcat/conf/server.xml”),AccessLogValve日志记录功能部分内容如下:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b"/>
- 在pattern中增加“%{X-Forwarded-For}i”,修改后的server.xml为:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%{X-Forwarded-For}i %h %l %u %t "%r" %s %b" /> </Host>
- 查看“localhost_access_log”日志文件,可获取X-Forwarded-For对应的访问者真实IP。
Apache如何在访问日志中获取客户端真实IP
如果您的源站部署了Apache服务器,可通过运行命令安装Apache的第三方模块mod_rpaf,并修改“http.conf”文件获取客户IP地址。
- 执行以下命令安装Apache的一个第三方模块mod_rpaf。
wget https://github.com/gnif/mod_rpaf/archive/v0.6.0.tar.gz tar xvfz mod_rpaf-0.6.tar.gz cd mod_rpaf-0.6 /usr/local/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
- 打开“httpd.conf”配置文件,并将文件内容修改为如下内容:
LoadModule rpaf_module modules/mod_rpaf-2.0.so ##加载mod_rpaf模块 <IfModule mod_rpaf.c> RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1 <反向代理IPs> RPAFheader X-Forwarded-For </IfModule>
- 定义日志格式。
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" common
- 启用自定义格式日志。
CustomLog "/[apache目录]/logs/$access.log" common
- 重启Apache,使配置生效。
/[apached目录]/httpd/bin/apachectl restart
- 查看“access.log”日志文件,可获取X-Forwarded-For对应的客户端真实IP。
IIS 6如何在访问日志中获取客户端真实IP
如果您的源站部署了IIS 6服务器,您可以通过安装“F5XForwardedFor.dll”插件,从IIS 6服务器记录的访问日志中获取客户端真实的IP地址。
- 下载F5XForwardedFor模块。
- 根据您服务器的操作系统版本将“x86\Release”或者“x64\Release”目录中的“F5XForwardedFor.dll”文件复制至指定目录(例如,“C:\ISAPIFilters”),同时确保IIS进程对该目录有读取权限。
- 打开IIS管理器,找到当前开启的网站,在该网站上右键选择“属性”,打开“属性”页面。
- 在“属性”页面,切换至“ISAPI筛选器”,单击“添加”,在弹出的窗口中,配置如下信息:
- “筛选器名称”:“F5XForwardedFor”;
- “可执行文件”:“F5XForwardedFor.dll”的完整路径,例如:“C:\ISAPIFilters\F5XForwardedFor.dll”
- 单击“确定”,重启IIS 6服务器。
- 查看IIS 6服务器记录的访问日志(默认的日志路径为:“C:\WINDOWS\system32\LogFiles\ ”,IIS日志的文件名称以“.log”为后缀),可获取X-Forwarded-For对应的客户端真实IP。
IIS 7如何在访问日志中获取客户端真实IP
如果您的源站部署了IIS 7服务器,您可以通过安装“F5XForwardedFor”模块,从IIS 7服务器记录的访问日志中获取客户端真实的IP地址。
- 下载F5XForwardedFor模块。
- 根据服务器的操作系统版本将“x86\Release”或者“x64\Release”目录中的“F5XFFHttpModule.dll”和“F5XFFHttpModule.ini”文件复制到指定目录(例如,“C:\x_forwarded_for\x86”或“C:\x_forwarded_for\x64”),并确保IIS进程对该目录有读取权限。
- 在IIS服务器的选择项中,双击“模块”,进入“模块”界面。
- 单击“配置本机模块”,在弹出的对话框中,单击“注册”。
- 在弹出的对话框中,按操作系统注册已下载的DLL文件后,单击“确定”。
- x86操作系统:注册模块“x_forwarded_for_x86”
- 名称:x_forwarded_for_x86
- 路径:“C:\x_forwarded_for\x86\F5XFFHttpModule.dll”
- x64操作系统:注册模块“x_forwarded_for_x64”
- 名称:x_forwarded_for_x64
- 路径:“C:\x_forwarded_for\x64\F5XFFHttpModule.dll”
- x86操作系统:注册模块“x_forwarded_for_x86”
- 注册完成后,勾选新注册的模块(“x_forwarded_for_x86”或“x_forwarded_for_x64”)并单击“确定”。
- 在“ISAPI和CGI限制”中,按操作系统添加已注册的DLL文件,并将其“限制”改为“允许”。
- x86操作系统:
- ISAPI或CGI路径:“C:\x_forwarded_for\x86\F5XFFHttpModule.dll”
- 描述:x86
- x64操作系统:
- ISAPI或CGI路径:“C:\x_forwarded_for\x64\F5XFFHttpModule.dll”
- 描述:x64
- x86操作系统:
- 重启IIS 7服务器,等待配置生效。
- 查看IIS 7服务器记录的访问日志(默认的日志路径为:“C:\WINDOWS\system32\LogFiles\ ”,IIS日志的文件名称以“.log”为后缀),可获取X-Forwarded-For对应的客户端真实IP。