基于访问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. generic cialis at walmart 发布于 2019年11月3日 00:47 #

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

  2. https://topearners.xyz/ 发布于 2019年11月6日 15:09 #

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

  3. generic viagra at walmart 发布于 2019年11月7日 08:09 #

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

  4. viagra pill 发布于 2019年11月8日 01:14 #

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

  5. cialis generic name 发布于 2019年11月9日 15:08 #

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

  6. kratom tincture 发布于 2019年11月10日 23:31 #

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

  7. cheap viagra usa without prescription 发布于 2019年11月11日 15:10 #

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

  8. cialis 发布于 2019年11月12日 14:08 #

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

  9. cialis usa 发布于 2019年11月16日 03:10 #

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

  10. acquisto viagra 发布于 2019年11月16日 20:55 #

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

  11. cheap viagra usa without prescription 发布于 2019年11月17日 16:36 #

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

  12. Freeble.co.kr 发布于 2019年11月19日 16:10 #

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

  13. cialis 发布于 2019年11月23日 13:10 #

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

  14. how much is generic viagra 发布于 2019年11月24日 07:04 #

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

  15. buy generic viagra 发布于 2019年11月24日 09:29 #

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

  16. cenforce 发布于 2019年11月26日 00:18 #

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

  17. Temple Run 2 Mod Apk 发布于 2019年11月26日 11:51 #

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

  18. buy cialis online 发布于 2019年11月26日 19:36 #

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

  19. online viagra 发布于 2019年11月28日 14:23 #

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

  20. generic viagra without a doctor prescription 发布于 2019年11月30日 23:51 #

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

  21. head to the Dich 123 site 发布于 2019年12月1日 16:31 #

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

  22. erection pills online viagra 发布于 2019年12月4日 22:13 #

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

  23. generic viagra sales 发布于 2019年12月10日 07:50 #

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

  24. cialis super force 100 mg 60 mg pills 发布于 2019年12月14日 08:30 #

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

  25. generic viagra 100mg for sale 发布于 2019年12月15日 09:27 #

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

  26. cialis price costco 发布于 2019年12月19日 15:39 #

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

  27. tadalafil 发布于 2019年12月19日 22:41 #

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

  28. porn 发布于 2019年12月31日 09:31 #

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

  29. cialis price 发布于 2020年1月6日 03:48 #

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

  30. generic viagra canada 发布于 2020年1月26日 02:07 #

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

  31. best generic viagra 发布于 2020年2月6日 07:42 #

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

引用地址

评论
  1. RandScupe RandScupe 发布于 2019年6月1日 07:19 #

    How Does Tadalis Sx Soft Work <a href=http://cialvia.com>cialis price</a> Comment Acheter Cialis Sur Internet Aromadex Cialis Adiccion

  2. LesDold LesDold 发布于 2019年6月3日 06:22 #

    Prix Levitra Pfizer Pharmacie Cost Of Levitra At Cvs 360 Get Levitra Online <a href=http://gaprap.com>viagra</a> Cialis Indian Pharmacy Cialis Funciona Zupar

  3. KelScoord KelScoord 发布于 2019年6月5日 23:24 #

    Viagra 8 Mg <a href=http://curerxfor.com>viagra</a> Amoxicillin Herbal

  4. KelScoord KelScoord 发布于 2019年6月6日 00:14 #

    5142.1 Zithromax Acne Cialis Sottobanco <a href=http://kamagpills.com></a> Vente Viagra Tunisie Viagra Store Usa Confronto Levitra Cialis Viagra

  5. Stepbycle Stepbycle 发布于 2019年6月8日 00:36 #

    Vente Viagra A Nice My Canadian Pharcharmy Online Viagra Pagamento Alla Consegna <a href=http://4rxday.com>generic cialis</a> Generique Baclofen 25mg Viagra Zollfrei Deutschland

  6. RandScupe RandScupe 发布于 2019年6月11日 22:59 #

    Amoxicillin Effects For Sale Progesterone Uso Cialis Come Cura <a href=http://nefoc.com>propecia de 10 mg</a> Cialis 10 Mg Prezzo In Farmacia Antibiotics Online Overnight Delivery Does Amoxicillin Treat Uti

  7. RandScupe RandScupe 发布于 2019年6月14日 17:16 #

    Amoxicillin 250mg Description Prednisone Side Effects <a href=http://ordercheapvia.com>viagra online prescription</a> 7zx Cialis Best Sellers Catalog Online Pharmacy Cost Levitra

  8. Stepbycle Stepbycle 发布于 2019年6月17日 02:04 #

    Propecia Viagra Combined Levitra Acidez <a href=http://erxbid.com>cialis 100mg</a> Kamagra Helly 100mg

  9. LesDold LesDold 发布于 2019年6月17日 05:37 #

    Secure Hydrochlorothiazide Oretic Fedex Shipping Buy Flagyl 500 Mg With No Script <a href=http://cial40mg.com>viagra vs cialis</a> Where To Buy Jelly Viagra Genericpillsshop Stendra Worldwide Usa Over Night

  10. KelScoord KelScoord 发布于 2019年6月17日 05:59 #

    Cialisextense Dose Amoxicillin For Cats <a href=http://buycialcheap.com>cialis without a doctor's prescription</a> Priligy 15mg Amoxicilina Discount Pills By Money Order

  11. KelScoord KelScoord 发布于 2019年6月17日 06:50 #

    Acheter Azithromycin Canada <a href=http://zgdkdz.com>viagra</a> Prescription Drugs Without Prescription Buy Synthroid Mexico

  12. RandScupe RandScupe 发布于 2019年6月24日 10:01 #

    Propecia Once A Week <a href=http://gnplls.com>levitra 10 mg prospecto</a> Secure Ordering Isotretinoin Pills In Internet Order Generic Isotretinoin Prix Viagra Cialis Levitra

  13. Mario Celso Lopes Mario Celso Lopes 发布于 2019年6月25日 10:24 #

    It's a shame you don't have a donate button! I'd without a doubt donate to this outstanding blog!
    I suppose for now i'll settle for book-marking and adding your RSS feed to my Google
    account. I look forward to brand new updates and will share this website
    with my Facebook group. Chat soon!

  14. Mario Celso Lopes Mario Celso Lopes 发布于 2019年6月25日 10:24 #

    It's a shame you don't have a donate button! I'd without a doubt donate to this outstanding blog!
    I suppose for now i'll settle for book-marking and
    adding your RSS feed to my Google account. I look forward to brand new updates and will
    share this website with my Facebook group. Chat soon!

  15. Stepbycle Stepbycle 发布于 2019年6月25日 16:16 #

    Kamagra Vente Libre Montreal Cheap Plavix Canada Kamagra Uk Cheap <a href=http://cialisong.com>cheapest cialis</a> Cheapest Levitra Plus Indian Pharmacy Clomid

  16. RandScupe RandScupe 发布于 2019年6月27日 04:18 #

    Discount Progesterone By Money Order Tablet Viagra Yahoo Respuestas <a href=http://avdrug.com>levitra 10mg pas cher</a> Propecia Interactions Drug Information Viagra Fettes Essen Amoxicillin Skin Rash

  17. KelScoord KelScoord 发布于 2019年6月28日 10:12 #

    Us Fast Shipping Meds Dapoxetine Order Elocon Best Website Overseas <a href=http://mdsmeds.com>tadalafil cialis from india</a> Buy Generic Propecia 5mg Pediatric Dose Amoxicillin Viagra Pharmacy

  18. KelScoord KelScoord 发布于 2019年6月28日 11:00 #

    Priligy And Levitra Together <a href=http://cialiviag.com>generic 5mg cialis best price</a> Canadian Pharmacy Antibotics

  19. BrettPes BrettPes 发布于