geoip-rs
geoip-rs is a geoip service: it provides geographical information about the calling or the specified IP address. It supports both IPV4 and IPV6.
-
When called with no query params, it resolves the calling IP address. For example: https://api.geoip.rs
-
When called with the
ip
query param, it resolves the specified IP address. For example: https://api.geoip.rs/?ip=216.58.205.132If the provided IP address is invalid, it falls back to the calling IP address.
-
When called with the
callback
query param, it returns a JSONP response, with the json wrapped by the specified callback. For example: https://api.geoip.rs/?ip=216.58.205.132&callback=my_function -
By default, responses will be in english. An optional
lang
query param can be provided: if a translation is available, returned data will be in that language. Current list includes:de
,en
,es
,fr
,ja
,pt-BR
,ru
,zh-CH
. For example: https://api.geoip.rs/?ip=216.58.205.132&lang=ja
Example response
Valid ip address:
Not found (private) ip address:
Speed
On an 8 cores Intel i7, geoip.rs can serve ~30K requests/sec.
Dataset
geoip-rs uses the free dataset provided by maxmind. It's not bundled: you have to download it separately.
Download "GeoLite2 City" dataset in binary format from here and unzip it.
Running
Install geoip.rs with
If you don't have cargo
, install it with
|
or read the tutorial for additional instructions.
You can specify the dataset location on the command line
or via environment variable
or via .env
#edit .env appropriately
You can also customize the host and port geoip.rs will listen to
or you can copy .env.template
to .env
and customize its contents
License
This project is licensed under the Apache License, Version 2.0