centos7 下 安装GeoIP2,在nginx中根据ip地址对应的国家转发请求
最近有个需求是根据用户的地理位置,访问不同的服务器,比如国外用户访问国外的服务器,国内的用户访问国内的服务器,实现的思路主要两种:
- 智能dns,这个需要在阿里云中注册为企业版才有提供
- nginx中使用geoip这个扩展
升级企业版需要用户的身份认证,比较麻烦,所以决定采用第二钟办法,准备好时间开搞。
网上搜索了下nginx安装GeoIP,才发现geoip这个库已经过时了,现在nginx推荐使用geoip2这个库,我们可以从nginx的扩展的网站上看到。

而且geoip数据库已经不更新了,官方也不提供下载了(http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry,这个地址下的文件无效),搜索到的数据文件都是8年前的。
辛苦找到的一些参考资料,瞬间就感觉没什么用了,比如:
https://blog.csdn.net/tadwork/article/details/80742904
https://blog.csdn.net/guyan0319/article/details/78845159
https://blog.csdn.net/weixin_33938733/article/details/92048497
https://www.cnblogs.com/wenyule/p/11071800.html(文章中居然说:geoip2已经有了,安装另寻),看到这句话,有点子失落。
https://www.wandouip.com/t5i172594/
https://blog.csdn.net/u012600104/article/details/80887422
so,只能去找geoip2的使用。
经过baidu,google发现了下列参考文章:
https://www.getpagespeed.com/server-setup/nginx/upgrade-to-geoip2-with-nginx-on-centos-rhel(一开始感觉如获至宝,敲完命令后发现,cnm居然要订阅才能yum install,本来这个库就是免费的,这么搞有意思吗)
关键文章在这里:
https://www.westidc.top/archives/469
https://www.azio.me/how-to-install-ngx_http_geoip2_module/
https://www.24kplus.com/linux/404.html(链接404,还以为是错的)
基本的安装思路:
- 从https://github.com/leev/ngx_http_geoip2_module.git 拉取geoip2的源码
- 结合nginx的源码,通过add-dynamic-module或者add-module,两者的区别在于,动态加载模块还是静态加载,我这里采用的是静态加载方便以后直接拷贝到别的服务器,而且不需要load_module
- 如果没有装过nginx,则使用make install,如果装过则使用make,完成编译后在objs中可以找到nginx,然后替换已有的nginx,替换之前可以备份。重启nginx后,可以使用nginx -V来查看是否得到了带geoip2扩展的nginx

得到带扩展的nginx后,就需要获取geoip2的数据文件,后续需要在nginx中使用,获取数据文件的方式也有两种:
- 到官方网站下载,https://www.maxmind.com/,注册后,可以在后台找到Download Databases,可以手动下载(缺点:每次需要登录网站下载,完成后,在传到服务器上)
- 使用geoipupdate这个命令,根据官网的介绍,只要配置好GeoIP.conf,一个命令就可以完成数据文件的更新
我们采用第二种方式
- 先去官网完成注册,而后根据提示找到License Keys,创建一个license,完成后会提示下载GeoIP.conf。
- 在服务器上安装geoipupdate,安装这个命令之前,先卸载自己服务器上已经安装的版本(不知道为什么服务器是什么时候装的旧版本),使用yum remove geoipupdate或者yum remove geoip完成卸载。
- 在https://github.com/maxmind/geoipupdate/releases下载对应的rpm文件,我这里下载的是geoipupdate_4.2.2_linux_amd64.rpm,rpm -i geoipupdate_4.2.2_linux_amd64.rpm 完成安装,geoipupdate -V 查看安装后的版本
- 将GeoIP.conf上传到服务器的 /etc目录下,执行geoipupdate,完成数据文件的下载,下载的数据文件放在,/usr/share/GeoIP,GeoLite2-ASN.mmdb,GeoLite2-City.mmdb,GeoLite2-Country.mmdb
接下来,我们可以在nginx中用geoip2的扩展命令,来调用这些数据文件,并做相应的转发。
centos7 下 安装GeoIP2,在nginx中根据ip地址对应的国家转发请求的更多相关文章
- CentOS7下安装ELK(nginx 、elasticsearch-5.1.1、logstash-5.1.1、kibana-5.1.1)
nginx: #直接yum安装: [root@elk-node1 ~]# yum install nginx -y 官方文档:http://nginx.org/en/docs/http/ngx_htt ...
- centos7下安装、配置Nginx、设置Nginx开机自启动
测试环境: [root@centos-linux ~]# cat /etc/redhat-releaseCentOS Linux release 7.6.1810 (Core) [root@cento ...
- 学习笔记(1)centos7 下安装nginx
学习笔记(1)centos7 下安装nginx 这里我是通过来自nginx.org的nginx软件包进行安装的. 1.首先为centos设置添加nginx的yum存储库 1.通过vi命令创建一个rep ...
- Windows和Linux(Centos7)下安装Nginx
安装Nginx 这篇记录只不过做了一个简单总结,如果对这块没什么概念的话可以看一下知乎的这篇文章 https://zhuanlan.zhihu.com/p/83890573 window下安装 win ...
- centos7 下 安装部署nginx
centos7 下 安装部署nginx 1.nginx安装依赖于三个包,注意安装顺序 a.SSL功能需要openssl库,直接通过yum安装: #yum install openssl b.gzip模 ...
- CentOS7 下 安装 supervisor以及使用
CentOS7 下 安装 supervisor 以及使用 手动安装 [注] linux环境必须安装 python 1.获取supervisor包:[https://pypi.python.org/py ...
- Linux CentOs7 下安装 redis
Linux CentOs7 下安装 redis 请将以下命令放入linux命令行中运行 如果安装过程前没有安装GCC请先安装 命令如下 $ yum install gcc-c++ $ wget ht ...
- 烂泥:Windows下安装与配置Nginx web服务器
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 前几篇文章,我们使用nginx都是在linux环境下,今天由于工作的需要.需要在windows环境也使用nginx搭建web服务器. 下面记录下有关ng ...
- CentOS 7 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)
原文 CentOS 7 下安装 LEMP 服务(nginx.MariaDB/MySQL 和 php) LEMP 组合包是一款日益流行的网站服务组合软件包,在许多生产环境中的核心网站服务上起着强有力的作 ...
随机推荐
- 1 深入Web请求过程
1.1 B/S网络架构概述 B/S 网络架构从前端到后端都得到了简化,都基于统一的应用层协议HTTP来交互数据,与大多数传统C/S互联网应用程 序采用的长连接的交互模式不同,HTTP采用无状态的短连接 ...
- 一条Sql的Spark之旅
背景 SQL作为一门标准的.通用的.简单的DSL,在大数据分析中有着越来越重要的地位;Spark在批处理引擎领域当前也是处于绝对的地位,而Spark2.0中的SparkSQL也支持ANSI-SQL ...
- python环境开发
Python3 下载 Python3 最新源码,二进制文档,新闻资讯等可以在 Python 的官网查看到: Python 官网:https://www.python.org/ 你可以在以下链接中下载 ...
- CCS过渡和动画
过渡 过渡能让使用过渡的元素在样式发生变化时(例如鼠标划过,单击按钮,点击图片时,颜色,尺寸,位置等样式发生变化),定义变化过程中的动画,让变化不再是瞬间产生. 过渡样式使用transition定义, ...
- oracle表空间位置迁移
1.先登录sqlplus: C:\Documents and Settings\jbdu>sqlplus “/as sysdba”2.修改表空间为Offline: SQL> alter t ...
- Hibernate框架预览以及基础介绍
前言 从本节我们开始进入到对于Hibernate框架的学习,当前Hibernate框架还未正式发布6.0稳定版本,所以这里我们以5.4.12Final版本进行讲解. Hibernate框架 Hiber ...
- java架构之路-(dubbo专题)dubbo的基本使用
今天我们来说一下dubbo的基本使用,没有什么高阶的知识,真的超级简单易懂. Dubbo核心功能解释 dubbo 阿里开源的一个SOA服务治理框架,从目前来看把它称作是一个RPC远程调用框架更为贴切. ...
- MySQL中的执行计划explain
一.用法及定义: explain为sql的执行计划.在sql前面加上explain关键字即可 如:explain select * from tbl_emp; 名词解释: id:[操作表的顺序] 1. ...
- Centos8(Liunx) 中安装PHP7.4 的三种方法和删除它的三种方法
编译安装 Centos8下PHP源码编译和通过yum安装的区别和以后的选择 其实这两种方法各有千秋: yum安装: 从yum安装来说吧,yum相当于是自动化帮你安装,你不用管软件的依赖关系,在yum安 ...
- python 學習深淺拷貝、集合、、作用域、函數
python 學習深淺拷貝.集合..作用域.函數 2020開年新冠肺炎流行大部分人員.工廠.單位無法復工生產,人員隔離每天外出都要戴口罩,在家隔離期間悶壞了感覺把半年的口糧都幹掉了,嚴重考察大家的資本 ...