使用Nginx 和 GeoIP 模块的可以来处理不同地区的访问,也可以处理不同地区访问项目不同的版本(灰度版本或是正常版本)

如果想屏蔽某个地区的 IP 访问的话,用 iptables 把来自某个国家的 IP 重定向到预定页面不是特别灵活的办法,如果只有一个 IP 可用而有多个网站在同一 VPS 上怎么办?用 iptable 屏蔽某个网站的话也会屏蔽同一 VPS 上的其他网站的访问。所以正统的办法还是用 GeoIP 配合对应的 web 服务器模块,比如:apache + mod_geoip 或者 nginx + http_geoip_module 等。

安装 Nginx

因为要用到 http_geoip_module 模块,系统自带的 nginx 一般不带这个模块,所以要下载 nginx 源代码后自行编译:

# wget http://nginx.org/download/nginx-0.9.6.tar.gz
# tar zxvf nginx-0.9.6.tar.gz
# cd nginx-0.9.6
# ./configure --without-http_empty_gif_module --with-poll_module \
--with-http_stub_status_module --with-http_ssl_module \
--with-http_geoip_module
# make; make install

安装 MaxMind 的 GeoIP 库

MaxMind 提供了免费的 IP 地域数据库(GeoIP.dat),不过这个数据库文件是二进制的,需要用 GeoIP 库来读取,所以除了要下载 GeoIP.dat 文件外(见下一步),还需要安装能读取这个文件的库。

# wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
# tar -zxvf GeoIP.tar.gz
# cd GeoIP-1.4.6
# ./configure
# make; make install

刚才安装的库自动安装到 /usr/local/lib 下,所以这个目录需要加到动态链接配置里面以便运行相关程序的时候能自动绑定到这个 GeoIP 库:

# echo '/usr/local/lib' > /etc/ld.so.conf.d/geoip.conf
# ldconfig

下载 IP 数据库

MaxMind 提供了免费的 IP 地域数据库,这个数据库是二进制的,不能用文本编辑器打开,需要上面的 GeoIP 库来读取:

# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
# gunzip GeoIP.dat.gz

配置 Nginx

最后是配置 nginx,在相关地方加上如下的配置就可以了:

# vi /etc/nginx/nginx.confhttp {
...
geoip_country /home/vpsee/GeoIP.dat;
fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
...
}server {
...location / {root   /home/vpsee/www;if ($geoip_country_code = CN) {root /home/vpsee/cn;}...}
...
}

这样,当来自中国的 IP 访问网站后就自动访问到预定的 /home/vpsee/cn 页面。关于 Nginx + GeoIP 还有很多有用的用法,比如做个简单的 CDN,来自中国的访问自动解析到国内服务器、来自美国的访问自动转向到美国服务器等。MaxMind 还提供了全球各个城市的 IP 信息,还可以下载城市 IP 数据库来针对不同城市做处理。

Nginx 和 GeoIP 模块的使用相关推荐

  1. nginx应用geoip模块,实现不同地区访问不同页面的需求(实践版)

    https://www.52os.net/articles/configure-nginx-using-geoip-allow-whitelist.html       搞了几天没有搞定,这篇文章一下 ...

  2. Nginx通过GeoIP模块获取IP所在地理位置

    Geo是geographic的缩写,意思是地理的,GeoIP即为IP地理位置数据库,可以根据IP获得地理位置信息.GeoIP库可以根据IP地址(支持IPv4 和 IPv6), 定位该IP所在的 洲.经 ...

  3. 实践:nginx代理,通过使用GeoIp模块获取访问者IP及访问地区信息

    目录 前言 一.在Linux中创建存放nginx模块文件夹 存在就不需要再次创建. 将所有nginx额外模块包都放到这个目录下 二.配置host文件代理,避免访问github太慢(已配置了跳过) 三. ...

  4. Nginx 附录C 模块编译,调试与测试

    Nginx 附录C 模块编译,调试与测试 C.1 编译与安装 环境要求 操作系统:目前Nginx各版本在以下操作系统和平台测试通过: FreeBSD 3 - 10 / i386; FreeBSD 5 ...

  5. nginx利用ngx_http_geoip2_module模块对国外ip限制

    1. 安装必要的环境 yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel ...

  6. Ubuntu20.04中fastdfs,nginx的安装和配置(apt-get安装nginx添加fastdfs-nginx-module模块)

    Ubuntu20.04中fastdfs,nginx的安装和配置 环境准备: 编译环境: Ubuntu20.04 使用的系统软件: fastdfs-6.07 fastdfs-nginx-module-1 ...

  7. nginx配置GeoIP

    由于之前没有接触过服务器,配置这个耗费了我好长时间 nginx 配置GeoIP实现不同国家访问不同的URL 首先要确保nginx已经配置了GeoIP模块,如果没有那就先来配置GeoIP 找到nginx ...

  8. 1. nginx扩展——ngx_lua 模块简介、安装

    1. 简介 ​ lua-nginx-module(ngx_lua module)把 Lua5.1 的解释器 或 LuaJIT 2.0/2.1 的解释器嵌入到 nginx 中,将强大的 Lua 线程(L ...

  9. Nginx源码研究之nginx限流模块详解

    这篇文章主要介绍了Nginx源码研究之nginx限流模块详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 高并发系统有三把利器:缓存.降级和限流: 限流的目的是通过对并 ...

最新文章

  1. python每天学习30分钟系列
  2. 若依集成CIM(即时推送系统)实现将服务端修改为SpringBoot+Vue前后端分离版(文末见代码下载)
  3. Excel抽奖小程序
  4. pythonopencv算法_python opencv之SURF算法示例
  5. 云原生数据库如何打造业务弹性
  6. android资源收藏贴[持续更新]
  7. 【Python】【Python语言】Python3.7.2的关键字与保留字
  8. AJAX Toolkits -- DropShadow
  9. 试图将驱动程序添加到存储区_云存储——终于等到你,还好没放弃
  10. Flutter进阶—质感设计之列表项
  11. 如何玩转 HTTP 3?
  12. Gridview表格控件
  13. SWFObject Flash 增强插件
  14. 网站建设的完整教程以及步骤,建议收藏!
  15. 2017年10月份上海拍牌 最后20秒发生了什么!
  16. python50图_菊安酱和菜菜的Python可视化50图
  17. Visual SourceSafe Explorer界面出现乱码+字体翻转
  18. PHP面试经常被问到的问题(附答案)
  19. 商标申请通常是新产品或创新的重要标志
  20. 2019石油大学西方艺术赏析第二阶段在线作业(答案)

热门文章

  1. axture动画原型制作_动画《凡人修仙传》开播:期待一个“十年番”
  2. matlab绘图坐标轴字体_matlab绘图如何定义坐标轴上的数字字体大小
  3. share.weiyun.com微云网页链接无法打开 解决办法
  4. 搜狐财报图解:年营收8.36亿美元 盈利7900万美元
  5. PS李涛老师的课程笔记 【PS初级】色彩模式图像分辨率
  6. mysql where 与having_正确理解MySQL中的where和having的区别
  7. imindmap10的更新日志
  8. 【PPT模板】精美答辩模板
  9. Arduino单片机出租车计价器起步价白天黑夜区分LCD1602光电测速
  10. python3 json解析_Python3 JSON 数据解析