场景:在许多跨国业务中,我们可能会碰着这样一种需求, 不同国家须要利用不同的域名进行访问,而如果不是访问的对应国别域名。会逼迫跳转到指定后缀的域名下,例如,美国用户访问主域名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.2nginx 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/ permanent;}好了,就先容到这里了,上面只是针对单个国家的利用,更多国家,再按照须要增加即可。
