CDN如何获取原始的ip c# - 苹果cms模板大全
  1. 苹果cms模板大全 > 流量运营 >

CDN如何获取原始的ip c#

CDN在启着两个特点: 一是分步式的节点,起到负载均衡、协调跨运营商跨地域访问的作用;二是节点上的缓存,这无疑可以减少源服务器的负载,节省带宽。   正是由于CDN如上两个特点,也给网站的管理人员带来了不少麻烦: 1. 静态文件版本管理CDN的缓存是用户一般不可控的,且静态资源(如:js、css、图片等)的缓存时间非常长,虽然CDN提供商一般都会提供刷新缓存的方法,这种方法在少量更新时可以接受,但如果更新文件过多(如一次升级),则会非常麻烦。可以使用“ 静态资源(JS、CSS、图片)版本控制”说的,对静态资源进行管理,这样每次升级时即省事又省心。 2. 启用HTTP压缩HTTP压缩是网页优化几大方法中见效最大的一个,启用CDN后,HTTP压缩的配置会比较麻烦。在做完成通常的启用压缩方法后,还要 启用压缩对HTTP1.0、代理的支持,在IIS下配置如下:cscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcNoCompressionForHttp10 falsecscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcNoCompressionForProxies false做完上述配置后,通知CDN提供商,开通HTTP压缩功能即可。而我用的网宿CDN还有其特殊要求,他要求 在响应里增加一个HTTP Header:   Vary: Accept-Encoding 。只有有这个头部的文件,才会接受压缩。这个Header可以简单地在IIS的站点属性里添加。 3. 获取客户端真实IP由于访客不是直接访问源服务器,跟源服务打交道的都是CDN的节点机器,所以在源服务器抓取到的IP都是节点IP。这对按ip来统计的浏览量、网站统计等模块的影响会比较大。一般来说,CDN节点会以某种方式将源客户端的IP传递给源服务器,就拿我用的网宿CDN来说,它是将源IP添加到了一个叫“Cdn-Src-Ip”的Http Header里,以C#语言为例,获得客户端真实IP的方式如下:// 网宿的cdn是String srcIp = Request.Headers["Cdn-Src-Ip"];    if(srcIp == null)    {         srcIp = Request.UserHostAddress;} //蓝汛的是 HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"]; 以上内容,根据不同的CDN提供商可能会有所不同,操作前最好咨询自己的CDN提供商

 

 

 

  1.  public static string GetUserIp
  2.   {
  3.   get
  4.   {
  5.   string userIP = "未获取用户IP";
  6.   
  7.   try
  8.   {
  9.   if (HttpContext.Current == null
  10.   || HttpContext.Current.Request == null
  11.   || HttpContext.Current.Request.ServerVariables == null)
  12.   return "";
  13.   
  14.   string CustomerIP = "";
  15.   
  16.   //CDN加速后取到的IP
  17.   CustomerIP = HttpContext.Current.Request.Headers["Cdn-Src-Ip"];
  18.   if (!string.IsNullOrEmpty(CustomerIP))
  19.   {
  20.   return CustomerIP;
  21.   }
  22.   
  23.   CustomerIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
  24.   
  25.   if (!String.IsNullOrEmpty(CustomerIP))
  26.   return CustomerIP;
  27.   
  28.   if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
  29.   {
  30.   CustomerIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
  31.   if (CustomerIP == null)
  32. 本文地址:https://www.31idc.com/helpcontent/1831.html

    • 上一篇:Centos 如何安装英文版宝塔面板
    • 下一篇:iperf 和 iperf3 命令以及参数详解

    31IDC - 12 年深耕海外 IDC 高端资源

    立即登陆 立即注册
    7*24小时
    全天服务支持
    1V1
    专属客户服务
    99.9%
    SLA 可用性保障
    退订
    无忧退款保障
    100 %
    故障补偿保障

    服务器

    物理服务器

    关于我们

    快速链接

    联系我们

    • 微信:搜索公众号 “ 31IDC ”
    • 邮箱:max@31idc.com
    • 国内:+86 0551-65603607
    • 国际:400-018-2080
    友情链接: IDC公司 网站测速 XHL.HK 网站历史查询 美国服务器 5118营销大数据 VPS234主机测评 海外站群服务器

    这篇流量运营《CDN如何获取原始的ip c#》,目前已阅读次,本文来源于31idc,在2024-11-17发布,该文旨在普及网站运营知识,如果你有任何疑问,请通过网站底部联系方式与我们取得联系

  33. 上一篇:pbootcms模板自动清理runtime缓存,自动清理缓存
  34. 下一篇:宝塔上如何更改默认PHP版本