zoukankan      html  css  js  c++  java
  • Nginx使用GeoIP模块来限制地区访问

    举例比如限制泰国地区的IP访问:

    前提条件,安装了http geoip 或stream geoip模块的Nginx Plus或者开源nginx

    Maxmind的GeoLite Legacy数据库

    1.安装NginxPlus

    yum -y install nginx-plus-module-geoip

    在配置文件中开启GeoIP动态模块

    load_module modules/ngx_http_geoip_module.so;

    load_module modules/ngx_stream_geoip_module.so;

    1.1 对于开源的Nginx

    nginx -V 确保已经安装了geoip模块

    2.然后从MaxMind下载ip库文件

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

    https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz

    wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

    https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz

    (GeoLite2-Country.mmdb)

    配置地理位置数据库的路径

    http语句中引用数据库文件

    http {

    ...

    geoip_country GeoIP/GeoIP.dat;

    geoip_city GeoIP/GeoLiteCity.dat;

    ... }

    通过geoip_country和geoip_city 指令的变量把数据传到map或split_client模块

    map $geoip_country_content_codes $nearest_server {

    default default {};

    EU  eu;

    NA  na;

    AS  as;

    AF  af;

    ...

    }

    然后可以根据 $nearest_server 变量传入的值选择一台upstream服务器;

    ......

    server {

      listen  1235;

      proxy_pass $nearest_server;

    ...

       location / {
           root   /home/vpsee/www;
           if ($geoip_country_code = CN) {
             root /home/vpsee/cn;
              }
    if ($geoip_country_code = VN) {
             root /home/vpsee/vn;
              }

    ...

    }

    upstream eu {

    server eu1.example.com:12345;

    server eu2.example.com:12345;

    }

    http语句内嵌server语句实现将IP库文件,通过IP判断是否提供网页服务。

    $geoip_city_content_code  变量

    proxy_pass 去匹配相应的upstream服务器,进行响应即可。

  • 相关阅读:
    log4net Config Examples
    求解:Nhibernate Unknown entity class 的解决办法
    复制Oracle表的结构
    Linux下安装MySQL并为其创建新用户图解教程
    windows下使用ffmpeg进行视频转码,图片拉取的Java测试代码
    Linux下安装Nginx详细图解教程
    Linux下安装Memcached图解教程
    Linux下使用Yum安装ffmpeg
    图解Java中如何将Jar文件打包成exe文件
    Java中实现系统托盘功能(代码全贴,附加运行截图)
  • 原文地址:https://www.cnblogs.com/Enzoo/p/10571335.html
Copyright © 2011-2022 走看看