nginx使用geoIP模块实现不同国别后缀域名的跳转

场景:在许多跨国业务中,我们可能会遇到这样一种需求,不同国家需要使用不同的域名进行访问,而如果不是访问的对应国别域名 。会强制跳转到指定后缀的域名下,例如,美国用户访问主域名www.a.com, 会自动跳转到www.a.us,香港的用户访问主域名www.a.com , 会自动跳转到www.a.hk , 台湾的用户访问主域名www.a.com ,会自动跳转到www.a.com.tw, 印尼的用户访问www.a.com 会自动跳转到www.a.in域名,而对于其它的国家,访问都是会到www.a.com主域名,例如巴基斯坦的用户访问www.a.us等,将会自动跳转到www.a.com主域名,等等,当然,这部分功能很多时候在代码中也可以简易的实现,今天我们来看一下在Nginx下如何实现的 。
前提条件:所有的域名已经配置好,并且解析和能正常访问 。
1、版本:
Tengine version: Tengine/2.3.2
nginx version: nginx/1.17.3
扩展插件下载地址:
https://github.com/leev/ngx_http_geoip2_module/archive/3.3.tar.gz
2、编译的时候需要增加的模块或参数:
例如:
./configure --prefix=/usr/local/nginx
--user=www --group=www
--sbin-path=/usr/sbin/nginx
--conf-path=
/usr/local/nginx/config/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-log-path=
/var/log/nginx/def_access.log
--pid-path=/run/nginx.pid
--with-http_geoip_module
--add-module=
/opt/ngx_http_geoip2_module-3.3
说明:
1、不存在的目录请提前创建;
2、用户和组提前创建;
3、扩展模块提前下载好并解压到指定路径;
4、ubuntu 、debian下可能需要增加 libgeoip-dev包,
5、centos、redhat下可能需要增加 geoip-devel包。
下载好对应IP库的mmdb包,如:GeoLite2-Country.mmdb,放到指定路径 。关于下载地址,大家可以自己查找,更新时间不一,尽量使用较新的为好,库的更新会比较频繁,如果是付费的,可能会比较准确,对于需求精准度要求高的用户,建议购买付费库 。
3、配置方式:
http 段的配置中,增加:
geoip2
/usr/local/nginx/GeoIP/GeoLite2-Country.mmdb {
$geoip2_data_country_code country iso_code;
}
server 段配置中,例如默认是.com的域名下,增加:
if ( $geoip2_data_country_code = "ID" ) {
rewrite ^/(.*) https://www.test.in/$1 permanent;
}
好了,就介绍到这里了,上面只是针对单个国家的使用,更多国家,再按照需要增加即可 。
【nginx使用geoIP模块实现不同国别后缀域名的跳转】


    推荐阅读