美文网首页Nginx
nginx配置GeoIP限制国外地址访问

nginx配置GeoIP限制国外地址访问

作者: langlyyy | 来源:发表于2021-10-19 18:29 被阅读0次

    零、编译

    如果要使用这个功能,需要在编译nginx的时候加上 --with-http_geoip_module 模块
    由于我使用的是openrestry,下面这些是我部署的关键步骤:
    1.下载openrestry

    [root@ip--143 /data ]# wget https://openresty.org/download/openresty-1.19.9.1.tar.gz
    

    2.解压编译

    [root@ip--143 /data/git ]# tar -xzvf  openresty-1.19.9.1.tar.gz /data
    [root@ip--143 /data/git ]# cd openresty-1.19.9.1
    [root@ip--143 /data/git/openresty-1.19.9.1 ]# ./configure --prefix=/data/openresty-1.19.9.1 --with-pcre --with-stream --with-threads --with-file-aio --with-http_v2_module --with-http_ssl_module --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module  --with-ipv6 --with-http_sub_module --with-http_geoip_module
    [root@ip--143 /data/git/openresty-1.19.9.1 ]# gmake && gmake install
    

    一、获取geoip地址库的方法

    方法1、通过链接下载geoip库
    MAXMIND 提供 GeoIP 数据库文件,该数据库文件包含 IP 及所属地域。通过读取该数据库文件,Nginx 将获得地址 IP 地址的地域信息。
    但是 Nginx 只能识别 .dat 数据文件,而现在(06/02/2021)官方已经不提供 .dat 格式的数据文件,只提供 .mmdb 和 CSV 格式的数据文件,如果需要dat格式的文件可以通过下面链接下载
    geoipIP地址库下载地址: https://www.miyuru.lk/geoiplegacy

    方法2、通过yum安装geoip库

    root@langly:~# yum -y install geoip-devel
    root@langly:~# ll /usr/share/GeoIP/GeoIP.dat
    lrwxrwxrwx. 1 root root 17 Nov 11  2019 /usr/share/GeoIP/GeoIP.dat -> GeoIP-initial.dat
    

    二、nginx配置

    geoip_country /data/openresty-1.15.8.3/nginx/geoip/country.dat;  #路径、文件名为你存放GeoIP.dat的路径和文件名
    map $geoip_country_code $allowed_country {
    default no; #设定默认值yes 或 no,默认通过或者默认拒绝
    CN yes; #国家 yes就是允许哪个国家访问
    }
    server
    {
            listen 80;
            server_name xxx.com;
            access_log /data/logs/nginx/http-access.log detail;
            error_log  /data/logs/nginx/http-error.log;
           
           #403限制访问返回指定网页
            error_page 403 /permission.html;
            location /permission.html {
                    root /data/openresty-1.15.8.3/nginx/geoip;
            }
    
            location / {
                if ($allowed_country = no) { # 添加判断,如果访问国家=no,就返回403
                        return 403;
                }
                root /data/openresty-1.15.8.3/nginx/geoip/;
                index index.html;
            }
    
    }
    

    相关文章

      网友评论

        本文标题:nginx配置GeoIP限制国外地址访问

        本文链接:https://www.haomeiwen.com/subject/dhpaoltx.html