IMO,the the geoip-route is a feature of *route* module,it shouldn't
involved with vars module,
and only get geo_city info  when the geoip condition is set, we don't need
calculate ip geo information for every request.

here is my solution:
  integrate maxmind code into lua-resty-radixtree, only when the route with
geo condition is matched , then we calculate the geo ip info.

YuanSheng Wang <[email protected]> 于2020年8月6日周四 下午6:00写道:

> >   1、I want route user‘s request from country request into different
> upstream
> host.
>
> I think AIPSIX needs to support this feature. it is a useful feature for
> the user.
> We do not need to update `resty-radixtree`, only update `ctx.vars` is
> enough.
>
> for example, a way to get the city: `ctx.vars.geo_city` .
>
> Then the users can use it in `route` or `plugin`, both of the way are fine.
>
> On Thu, Aug 6, 2020 at 8:55 AM Ming Wen <[email protected]> wrote:
>
> > Optional features should be implemented by plugins,
> > and the core should be keep simple.
> >
> > Thanks,
> > Ming Wen, Apache APISIX & Apache SkyWalking
> > Twitter: _WenMing
> >
> >
> > YuanSheng Wang <[email protected]> 于2020年8月6日周四 上午8:28写道:
> >
> > > On Thu, Aug 6, 2020 at 7:39 AM Ming Wen <[email protected]> wrote:
> > >
> > > > IMO, implement geo_ip as plugin is better, not in the route.
> > > >
> > >
> > > I would like to implement it in `route`.
> > >
> > > It may be a condition, we can support it in `vars'.
> > >
> > >
> > > >
> > > > And https://luarocks.org/modules/agladysh/lua-geoip is not a good
> > > > approach,
> > > > lua-resty-maxminddb[1] is good for APISIX.
> > > >
> > >
> > > this library is better. agree +1
> > >
> > >
> > > >
> > > > [1] https://github.com/anjia0532/lua-resty-maxminddb
> > > >
> > > > Thanks,
> > > > Ming Wen, Apache APISIX & Apache SkyWalking
> > > > Twitter: _WenMing
> > > >
> > > >
> > > > JinChao Shuai <[email protected]> 于2020年8月6日周四 上午1:47写道:
> > > >
> > > > > I also agree with the second approach and to `Yansheng Wang` that
> > users
> > > > can
> > > > > use their own GeoIP database.
> > > > >
> > > > > YuanSheng Wang <[email protected]> 于2020年8月5日周三 下午11:40写道:
> > > > >
> > > > > > Of course, the second way is better for APISIX.
> > > > > >
> > > > > > The `lua-geoip` is under Dual license, we need to confirm if we
> can
> > > use
> > > > > > this library.
> > > > > >
> > > > > > The users needs to download the GeoIP database by himself, Apache
> > > > APISIX
> > > > > > can
> > > > > > not ship with the GeoIP data(under LGPL 2.1).
> > > > > >
> > > > > >
> > > > > > On Wed, Aug 5, 2020 at 9:16 PM Li Ling(Lien) <[email protected]>
> > > > wrote:
> > > > > >
> > > > > > > rencently I am thinking about have Geo routing in APISIX,
> > > > > > > scenario:
> > > > > > >     1、I want route user‘s request from country request intoto
> > > > different
> > > > > > > upstream host.
> > > > > > >     2、When users from outside China redirect to international
> > > > > > homepage(many
> > > > > > > video sites like youku.com they ban users from outside china).
> > > > > > >
> > > > > > >
> > > > > > > here is two solution I digged into:
> > > > > > >
> > > > > > > 1、intergrate nginx module
> > > > > https://github.com/leev/ngx_http_geoip2_module
> > > > > > > and
> > > > > > > do variable matching.
> > > > > > >      disadvantage: we need calculate the geo data from ip info
> > for
> > > > > every
> > > > > > > request,which is so inefficient.
> > > > > > >
> > > > > > >
> > > > > > > 2、https://luarocks.org/modules/agladysh/lua-geoip
> > > > > > >      intergrate this lua module into lua-resty-radixtree, when
> > > > geo_ip_*
> > > > > > > parameter is set in the routes, we calculate the ip country
> info
> > > from
> > > > > > geoip
> > > > > > > library.so  that  it wont calculate the geo data for each
> > request.
> > > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > >
> > > > > > *MembPhis*
> > > > > > My GitHub: https://github.com/membphis
> > > > > > Apache APISIX: https://github.com/apache/incubator-apisix
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Thanks,
> > > > > Janko
> > > > >
> > > >
> > >
> > >
> > > --
> > >
> > > *MembPhis*
> > > My GitHub: https://github.com/membphis
> > > Apache APISIX: https://github.com/apache/incubator-apisix
> > >
> >
>
>
> --
>
> *MembPhis*
> My GitHub: https://github.com/membphis
> Apache APISIX: https://github.com/apache/incubator-apisix
>

Reply via email to