零、编译
如果要使用这个功能,需要在编译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;
}
}
网友评论