基于访问IP跳转对应城市的功能

基于访问IP跳转对应城市的功能

             

    有些情况下网站的展示会和用户的所在的城市有联系,比如团购,优惠服务等。APP可以通过GPS定位得到用户所在的城市,但PC端的业务如何进行判断呢,我们可以判断访问的IP来确认对应城市。PC端请求时会判断到客户端的IP属于哪个城市,将请求通过302跳转到对应的城市,常见的业务逻辑如下:

基于访问IP跳转对应城市的功能

             

    有些情况下网站的展示会和用户的所在的城市有联系,比如团购,优惠服务等。APP可以通过GPS定位得到用户所在的城市,但PC端的业务如何进行判断呢,我们可以判断访问的IP来确认对应城市。PC端请求时会判断到客户端的IP属于哪个城市,将请求通过302跳转到对应的城市,常见的业务逻辑如下:

    1、IP所属城市的清单,网上有很多开源的IP对应清单库,读者可自行下载,当然如果对于IP信息需要及时更新和准确性更高的话,建议使用付费平台。

    2、对应库不一定能覆盖所有的IP,并且还可能会存在误差,又或者用户所在的城市没有相关的服务,无法完成跳转到指定的城市,因此还需要做一些友好的提示,方便用户切换到想去的城市。

    3、用户如果做了切换城市的操作,都可以认为用户是需要在这个城市继续访问的,因此不能对每次的请求都去做IP对应城市跳转的操作。

    4、用户切换城市的操作,由前端的js去设置cookie,表明用户已经有了想去的地方。

 

了解到核心要素后,我们可以使用用Nginx进行处理。

    使用模块: ngx_http_geo_module,此模块Nginx默认已经提供了支持,不需要额外添加。

    指令:geo

    语法:geo [$address] $variable { ... }

    配置环境: http

示例:

geo $geo {

    ranges; #使用以IP段的形式定义地址,它必须放在首位。为了提升装载IP库的性能,IP段应按升序排列。

    default beijing; #无法匹配到对应的IP段,即使用这个默认值

    1.0.32.0-1.0.63.255 guangzhou; #IP段对应的城市,空格分开

    1.2.2.0-1.2.2.255 beijing;

    1.2.4.0-1.2.4.255 beijing;

    1.24.0.0-1.24.31.255 huhehaote;

    1.24.32.0-1.24.39.255 wulanchabu;

}

 

含义: 请求经过http执行阶段时,geo指令默认会从 $remote_addr获取IP值在去和$address匹配,如果匹配成功,就获取$address对应的值,将此值赋给$geo,如果匹配不到,就使用 default的值,即beijing。通过此操作,我们只需要准备好一份IP对应城市的清单即可。

 

下面提供一段简单的Nginx配置,它可以用来做IP跳转对应城市的功能:

location = / {

     if ($cookie_current_city){

    set $geo $cookie_current_city; # $cookie_current_city表示用户可能已经选择过城市或者之前已经IP跳转过,所以就直接跳转到对应cookie的城市

     rewrite ^/ $geo.testnginx.com redirect;

}

     rewrite ^/ $geo.testnginx.com redirect;

 


    用户进入网站的首页后,可以根据用户的IP进行跳转对应的城市,如果用户发现跳转有误差或者想换个城市看看,用户可以切换到自己想要的城市,此时前端JS可以种一个cookie,确保下次用户在访问首页的时候就会默认进入用户切换的城市。

 

    注意:

    1、cookie应该有效期;

    2、确保每个城市的服务都是存在的,如果某些城市没有对应的服务,那么在跳转的配置里面,应该去除掉,避免跳转到空的页面。

    图1根据访问IP跳转城市

图1中的关键要素:

    1、IP所属城市的清单,网上有很多开源的IP对应清单库,读者可自行下载,当然如果对于IP信息需要及时更新和准确性更高的话,建议使用付费平台。

    2、对应库不一定能覆盖所有的IP,并且还可能会存在误差,又或者用户所在的城市没有相关的服务,无法完成跳转到指定的城市,因此还需要做一些友好的提示,方便用户切换到想去的城市。

    3、用户如果做了切换城市的操作,都可以认为用户是需要在这个城市继续访问的,因此不能对每次的请求都去做IP对应城市跳转的操作。

    4、用户切换城市的操作,由前端的js去设置cookie,表明用户已经有了想去的地方。

 

了解到核心要素后,我们可以使用用Nginx进行处理。

    使用模块: ngx_http_geo_module,此模块Nginx默认已经提供了支持,不需要额外添加。

    指令:geo

    语法:geo [$address] $variable { ... }

    配置环境: http

示例:

geo $geo {

    ranges; #使用以IP段的形式定义地址,它必须放在首位。为了提升装载IP库的性能,IP段应按升序排列。

    default beijing; #无法匹配到对应的IP段,即使用这个默认值

    1.0.32.0-1.0.63.255 guangzhou; #IP段对应的城市,空格分开

    1.2.2.0-1.2.2.255 beijing;

    1.2.4.0-1.2.4.255 beijing;

    1.24.0.0-1.24.31.255 huhehaote;

    1.24.32.0-1.24.39.255 wulanchabu;

}

 

含义: 请求经过http执行阶段时,geo指令默认会从 $remote_addr获取IP值在去和$address匹配,如果匹配成功,就获取$address对应的值,将此值赋给$geo,如果匹配不到,就使用 default的值,即beijing。通过此操作,我们只需要准备好一份IP对应城市的清单即可。

 

下面提供一段简单的Nginx配置,它可以用来做IP跳转对应城市的功能:

location = / {

     if ($cookie_current_city){

    set $geo $cookie_current_city; # $cookie_current_city表示用户可能已经选择过城市或者之前已经IP跳转过,所以就直接跳转到对应cookie的城市

     rewrite ^/ $geo.testnginx.com redirect;

}

     rewrite ^/ $geo.testnginx.com redirect;

 


    用户进入网站的首页后,可以根据用户的IP进行跳转对应的城市,如果用户发现跳转有误差或者想换个城市看看,用户可以切换到自己想要的城市,此时前端JS可以种一个cookie,确保下次用户在访问首页的时候就会默认进入用户切换的城市。

 

    注意:

    1、cookie应该有效期;

    2、确保每个城市的服务都是存在的,如果某些城市没有对应的服务,那么在跳转的配置里面,应该去除掉,避免跳转到空的页面。

Pingbacks已打开。

Trackbacks
  1. cialis online 发布于 2020年3月15日 06:54 #

    WUMN - 基于访问IP跳转对应城市的功能

  2. viagra 发布于 2020年3月16日 19:37 #

    WUMN - 基于访问IP跳转对应城市的功能

  3. inhalers online 发布于 2020年3月17日 19:37 #

    WUMN - 基于访问IP跳转对应城市的功能

  4. cialis 20mg 发布于 2020年3月22日 04:54 #

    WUMN - 基于访问IP跳转对应城市的功能

  5. porn 发布于 2020年3月27日 12:40 #

    WUMN - 基于访问IP跳转对应城市的功能

引用地址

评论
  1. Unloape Unloape 发布于 2020年3月13日 17:36 #

    order viagra canada http://levph24.com - levitra generic cialis discount price

  2. TwendaOpectept TwendaOpectept 发布于 2020年3月13日 17:48 #

    cbd cbd cream <a href=" http://cbdoilww.com/ ">cbd online </a> buy hemp http://cbdoilww.com/ - cbd gummies

  3. seelsbruigmamag seelsbruigmamag 发布于 2020年3月13日 17:53 #

    cbd pills walmart http://cbdoilusd.com/ - best cbd products eve hemp oil review top cbd companies

  4. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月13日 18:36 #

    cbd http://cbdoilusd.com/ - buy cbd oil online cbd oil online <a href="http://cbdoilusd.com/ ">cbd online </a> cbd vape

  5. exolawes exolawes 发布于 2020年3月13日 18:48 #

    cialis pills women http://viaph24.com - viagra pills order viagra pfizer online

  6. JamesSab JamesSab 发布于 2020年3月13日 18:53 #

    cheap viagra in sydney http://levph24.com - levitra viagra sale pfizer

  7. unubyMipAmouppy unubyMipAmouppy 发布于 2020年3月13日 19:07 #

    buy cbd buy cbd <a href="http://cbdoilusd.com/ ">buy hemp oil </a> cbd oil online

  8. JamesSab JamesSab 发布于 2020年3月13日 19:17 #

    cialis pills for sale uk http://ciaph24.com - cialis 20 mg best price cheapest cialis au

  9. rortuappy rortuappy 发布于 2020年3月13日 19:28 #

    cheap cialis new zealand http://levph24.com - levitra buy herbal viagra online

  10. RobertWousa RobertWousa 发布于 2020年3月13日 19:32 #

    can i buy cialis over the counter in canada http://levph24.com - levitra prices order generic viagra no prescription

  11. Ruseteoth Ruseteoth 发布于 2020年3月13日 19:33 #

    cbd tinctures http://cbdoilww.com/ - cbd online cbd cream cbd gummies

  12. toofAlgovoptek toofAlgovoptek 发布于 2020年3月13日 19:42 #

    cbd http://cbdoilww.com/ cbd oil online <a href="http://cbdoilww.com/ ">buy hemp </a> cbd

  13. Jeffreymaw Jeffreymaw 发布于 2020年3月13日 20:07 #

    This is nicely expressed. . <a href="https://canadianpharmaceuticalsonlinerx.com/">cvs online pharmacy</a>

  14. FelipePef FelipePef 发布于 2020年3月13日 20:16 #

    Cheers, I appreciate this! <a href="https://canadianpharmacyntv.com/">canadian online pharmacies</a>

  15. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月13日 20:24 #

    cannapro cbd oil http://cbdoilusd.com/ cbd oil walgreens <a href="http://cbdoilusd.com/ ">where can you buy cbd oil </a> is hemp oil good for you

  16. Davidteaph Davidteaph 发布于 2020年3月13日 20:36 #

    how to order viagra online http://viaph24.com - viagra reliable place buy cialis

  17. RobertKiz RobertKiz 发布于 2020年3月13日 20:39 #

    coin master hack deutsch kostenlos <a href="https://coinmasterhack7.com/ ">coin master spin cheats </a>

  18. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月13日 20:59 #

    cbd tinctures cbd <a href="http://cbdoilusd.com/ ">buy hemp oil </a> cbd drops

  19. imipleentinna imipleentinna 发布于 2020年3月13日 21:02 #

    http://cbdoilww.com/ cbd oil http://cbdoilww.com/ - buy hemp oil <a href="http://cbdoilww.com/ ">cbd oil online </a>

  20. foedgehondori foedgehondori 发布于 2020年3月13日 21:07 #

    http://cbdoilww.com/ hemp cbd http://cbdoilww.com/ - cbd vape <a href="http://cbdoilww.com/ ">buy cbd oil </a>

  21. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月13日 21:21 #

    cbd oil <a href=" http://cbdoilusd.com/ ">cbd tinctures </a> cbd gummies

  22. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月13日 21:43 #

    http://cbdoilusd.com/ where to buy cbd oil near me cannabis oil benefits <a href="http://cbdoilusd.com/ ">cbd pain cream </a> does cbd help you sleep

  23. vagadvorm vagadvorm 发布于 2020年3月13日 22:02 #

    order real viagra online http://viaph24.com - generic viagra buy cialis viagra levitra

  24. Stepven Stepven 发布于 2020年3月13日 22:10 #

    Stendra Ed Best Website <a href=http://apcialisle.com/#>Buy Cialis</a> Find Viagra Cheap Overnight Mail <a href=http://apcialisle.com/#>Buy Cialis</a> El Cialis Es Malo

  25. TwendaOpectept TwendaOpectept 发布于 2020年3月13日 22:20 #

    cbd <a href=" http://cbdoilww.com/ ">buy hemp oil </a> cbd drops

  26. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月13日 22:25 #

    http://cbdoilusd.com/ pur seven cbd cbdmd cbd oil <a href="http://cbdoilusd.com/ ">cbd weed </a> cbd vape liquid

  27. unubyMipAmouppy unubyMipAmouppy 发布于 2020年3月13日 22:27 #

    cbd cartridges near me http://cbdoilusd.com/ - nuleaf naturals liquid gold cbd oil cbd oil utah

  28. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月13日 22:43 #

    http://cbdoilusd.com/ cbd oil online http://cbdoilusd.com/ - cbd vape <a href="http://cbdoilusd.com/ ">buy cbd oil </a>

  29. seelsbruigmamag seelsbruigmamag 发布于 2020年3月13日 22:54 #

    cbdoilaide best cbd oil marijuana oil <a href="http://cbdoilusd.com/ ">cbd high </a> cbd dog treats

  30. unubyMipAmouppy unubyMipAmouppy 发布于 2020年3月13日 23:07 #

    cbd tinctures http://cbdoilusd.com/ - buy cbd oil online cbd tinctures <a href="http://cbdoilusd.com/ ">buy cbd oil </a> buy cbd oil online

  31. Ruseteoth Ruseteoth 发布于 2020年3月14日 00:04 #

    cbd cream http://cbdoilww.com/ - buy cbd oil online cbd drops <a href="http://cbdoilww.com/ ">cbd drops </a> cbd tinctures

  32. toofAlgovoptek toofAlgovoptek 发布于 2020年3月14日 00:15 #

    cbd online http://cbdoilww.com/ - cbd vape buy cbd <a href="http://cbdoilww.com/ ">cbd online </a> cbd vape

  33. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月14日 00:33 #

    cbd dosage for dogs cbd for dogs <a href="http://cbdoilusd.com/ ">can i buy cbd </a> cbd vape

  34. exolawes exolawes 发布于 2020年3月14日 00:42 #

    cheap viagra in the uk http://viaph24.com - viagra without doctor prescription buy cialis melbourne

  35. exolawes exolawes 发布于 2020年3月14日 00:49 #

    viagra online canadian pharmacy http://ciaph24.com - real cialis without a doctor prescription how do i order cialis

  36. vagadvorm vagadvorm 发布于 2020年3月14日 00:50 #

    cialis super active 20mg pills http://levph24.com - levitra online buy viagra in the usa

  37. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月14日 01:05 #

    buy cbd oil <a href=" http://cbdoilusd.com/ ">buy cbd oil online </a> cbd oil

  38. Harrypremi Harrypremi 发布于 2020年3月14日 01:27 #

    how to buy viagra in canada http://levph24.com - generic levitra vardenafil use of cialis pills

  39. seelsbruigmamag seelsbruigmamag 发布于 2020年3月14日 01:27 #

    buy cbd cbd vape <a href=" http://cbdoilusd.com/ ">buy hemp </a> cbd oil online http://cbdoilusd.com/ - buy cbd oil

  40. Chotouts Chotouts 发布于 2020年3月14日 01:28 #

    generic cialis buy http://viaph24.com - buy viagra cialis 20 mg for sale

  41. imipleentinna imipleentinna 发布于 2020年3月14日 01:33 #

    cbd oil buy hemp <a href=" http://cbdoilww.com/ ">buy cbd </a> cbd gummies http://cbdoilww.com/ - cbd

  42. foedgehondori foedgehondori 发布于 2020年3月14日 01:39 #

    buy cbd oil online http://cbdoilww.com/ - cbd oil online cbd oil cbd cream

  43. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月14日 01:56 #

    thc and cbd pure natural cbd hemp oil herbal drops <a href="http://cbdoilusd.com/ ">buy hemp oil with cbd </a> cbd cannabinoid oil

  44. RobertKiz RobertKiz 发布于 2020年3月14日 02:18 #

    coin master daily bonus hack <a href="https://coinmasterhack7.com/ ">coin master spin and coin hack </a>

  45. RobertWousa RobertWousa 发布于 2020年3月14日 02:20 #

    over the counter viagra cvs http://viaph24.com - viagra cheap kamagra cialis

  46. unubyMipAmouppy unubyMipAmouppy 发布于 2020年3月14日 02:31 #

    http://cbdoilusd.com/ level select cbd top 5 cbd companies <a href="http://cbdoilusd.com/ ">hemp medicinal uses </a> cbd oklahoma

  47. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月14日 02:31 #

    cbd liquid http://cbdoilusd.com/ - cbd hemp oil herbal drops complete cbd cannabis sativa l cbd oil who sells cbd oil near me

  48. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月14日 02:54 #

    cbd vape http://cbdoilusd.com/ - cbd cream cbd <a href="http://cbdoilusd.com/ ">buy cbd oil online </a> cbd oil

  49. TwendaOpectept TwendaOpectept 发布于 2020年3月14日 02:56 #

    http://cbdoilww.com/ cbd tinctures http://cbdoilww.com/ - buy cbd <a href="http://cbdoilww.com/ ">buy hemp </a>

  50. seelsbruigmamag seelsbruigmamag 发布于 2020年3月14日 03:07 #

    http://cbdoilusd.com/ cbd oil for pain management http://cbdoilusd.com/ - hemp oil for pain at walmart <a href="http://cbdoilusd.com/ ">purekana </a>

  51. JamesSab JamesSab 发布于 2020年3月14日 03:11 #

    buy cialis non prescription http://viaph24.com - generic viagra cialis online cheap canada

  52. unubyMipAmouppy unubyMipAmouppy 发布于 2020年3月14日 03:13 #

    cbd drops cbd <a href="http://cbdoilusd.com/ ">buy cbd oil online </a> cbd online

  53. Harrypremi Harrypremi 发布于 2020年3月14日 03:19 #

    meds sale levitra http://levph24.com - generic levitra vardenafil viagra pfizer buy

  54. IsmaelAcron IsmaelAcron 发布于 2020年3月14日 03:38 #

    You actually explained that well! <a href="https://canadianpharmaceuticalsonlinerx.com/">canadian pharmacy cialis</a> <a href="https://canadianpharmacyntv.com/">northwest pharmacy</a> <a href="https://canadianonlinepharmacytrust.com/">cvs online pharmacy</a> <a href="https://viaonlinebuyntx.com/">canada pharmacy</a> <a href="https://canadianpharmaciescubarx.com/">canadian pharmacy viagra</a>

  55. Jeffreymaw Jeffreymaw 发布于 2020年3月14日 03:38 #

    Helpful knowledge. Cheers. <a href="https://canadianpharmaceuticalsonlinerx.com/">online canadian pharmacy</a>

  56. FelipePef FelipePef 发布于 2020年3月14日 03:51 #

    Nicely put, Thanks! <a href="https://canadianpharmaceuticalsonlinerx.com/">online canadian pharmacy</a>

  57. Ruseteoth Ruseteoth 发布于 2020年3月14日 04:34 #

    http://cbdoilww.com/ cbd buy cbd oil <a href="http://cbdoilww.com/ ">buy cbd oil </a> cbd drops

  58. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月14日 04:35 #

    where to buy cbd oil for dogs <a href=" http://cbdoilusd.com/ ">cbd pure natural </a> buy cbd vape oil

  59. toofAlgovoptek toofAlgovoptek 发布于 2020年3月14日 04:42 #

    cbd gummies http://cbdoilww.com/ - buy cbd oil cbd gummies <a href="http://cbdoilww.com/ ">buy cbd oil </a> buy cbd

  60. JamesSab JamesSab 发布于 2020年3月14日 04:52 #

    buying cialis online canada http://viaph24.com - cheap viagra cialis over the counter

  61. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月14日 05:05 #

    cbd oil online http://cbdoilusd.com/ - cbd cream cbd tinctures buy cbd oil online

  62. JamesSab JamesSab 发布于 2020年3月14日 05:15 #

    generic for viagra http://viaph24.com - generic viagra 100mg buy viagra canada no prescription

  63. Harrypremi Harrypremi 发布于 2020年3月14日 05:23 #

    profile buy cheap viagra http://viaph24.com - viagra without a doctor prescription buy cialis 5 mg canada

  64. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月14日 05:34 #

    http://cbdoilusd.com/ cbd oil buy hemp oil <a href="http://cbdoilusd.com/ ">cbd oil online </a> buy cbd oil

  65. seelsbruigmamag seelsbruigmamag 发布于 2020年3月14日 05:36 #

    cbd http://cbdoilusd.com/ - cbd tinctures cbd tinctures <a href="http://cbdoilusd.com/ ">cbd gummies </a> cbd oil

  66. rortuappy rortuappy 发布于 2020年3月14日 05:43 #

    best place buy cialis online http://levph24.com - levitra coupon buy levitra dapoxetine

  67. rortuappy rortuappy 发布于 2020年3月14日 05:51 #

    download cheap viagra http://ciaph24.com - cost of cialis 20mg tablets buy cialis in india

  68. imipleentinna imipleentinna 发布于 2020年3月14日 05:54 #

    cbd gummies http://cbdoilww.com/ cbd cream <a href="http://cbdoilww.com/ ">cbd drops </a> buy cbd oil

  69. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月14日 06:00 #

    cannabidiol oil phytocannabinoid hemp oil <a href="http://cbdoilusd.com/ ">buy pure cbd oil </a> topical cbd oil

  70. foedgehondori foedgehondori 发布于 2020年3月14日 06:05 #

    cbd cream http://cbdoilww.com/ - buy cbd oil online cbd cream cbd oil online

  71. Davidteaph Davidteaph 发布于 2020年3月14日 06:05 #

    buy viagra canada online http://levph24.com - levitra generic buy viagra australia online

  72. Unloape Unloape 发布于 2020年3月14日 06:12 #

    order viagra from uk http://ciaph24.com - cialis coupon cialis pills india

  73. vientee vientee 发布于 2020年3月14日 06:23 #

    buy levitra in australia http://ciaph24.com - cialis 20 mg best price buy genuine levitra

  74. unubyMipAmouppy unubyMipAmouppy 发布于 2020年3月14日 06:23 #

    where can i buy cbd oil elixinol cbd oil <a href=" http://cbdoilusd.com/ ">organic hemp oil amazon </a> cbd on drug test http://cbdoilusd.com/ - cbd tincture dosage

  75. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月14日 06:23 #

    cbd bud for sale http://cbdoilusd.com/ - zilis cbd hemp oil scam will cbd oil show up in a drug test cbd oil charlottes web

  76. daliaAgriLdsib daliaAgriLdsib 发布于 2020年3月14日 07:00 #

    http://cbdoilusd.com/ cbd oil http://cbdoilusd.com/ - cbd oil online <a href="http://cbdoilusd.com/ ">cbd cream </a>

  77. Unloape Unloape 发布于 2020年3月14日 07:04 #

    usa viagra cheap info http://levph24.com - levitra coupon cheap herbal viagra uk

  78. unubyMipAmouppy unubyMipAmouppy 发布于 2020年3月14日 07:07 # </