[toc]@(目錄)
背景
查看服務器的訪問日志烘贴,發(fā)現(xiàn)每天都會有大量的外國ip構造一些特殊的數(shù)據(jù)掃描網(wǎng)站,即占用了服務器的資源又給服務器帶來一定的風險撮胧,所以要禁用國外的ip訪問。
禁用方案
nginx自帶geoip模塊老翘,可以識別訪問者ip地地域信息芹啥,并根據(jù)地域信息做出相應的處理锻离。nginx默認情況下并未將此模塊編譯進去,需要手動開啟墓怀,只需要在配置的時添加--with-http_geoip_module即可
--with-http_geoip_module
步驟
1汽纠、安裝geoip庫
eoip模塊依賴libgeoip-dev庫,在編譯nginx工程前需要先安裝geoip庫傀履。安裝好geoip庫后虱朵,會在/usr/share/GeoIp/目錄下生成GeoIP.dat數(shù)據(jù)。(此數(shù)據(jù)可能有些陳舊钓账,有些國內(nèi)的ip也會被識別成國外的ip情況碴犬,如8.141.xxx.xxx)
apt-get install libgeoip-dev
2、配置nginx編譯模塊梆暮,添加--with-http_geoip_module
./configure \
--user=www-data \
--group=www-data \
--with-http_v2_module \
--with-http_ssl_module \
--with-stream \
--with-openssl=../openssl-OpenSSL_1_1_1k \
--with-pcre=../pcre-8.40 \
--with-pcre-jit \
--with-zlib=../zlib-1.2.11 \
--with-http_geoip_module
3服协、編譯安裝nginx
make
make install
4、配置nginx
配置geoip模塊啦粹,只需要2步即可完成數(shù)據(jù)庫和禁用ip的工作偿荷。
1、配置geoip數(shù)據(jù)庫
geoip_country /usr/share/GeoIP/GeoIp.dat;
2唠椭、只允許國內(nèi)ip訪問
if ($geoip_country_code != CN ){
return 403;
}
http {
include mime.types;
default_type application/octet-stream;
# 指定geo數(shù)據(jù)庫文件
geoip_country /usr/share/GeoIP/GeoIp.dat;
location / {
root html;
index index.html index.htm;
# 未國內(nèi)ip,返回403錯誤
if ($geoip_country_code != CN ){
return 403;
}
}
}
5跳纳、重啟nginx
==這里是重啟應用,而非重新加載配置文件==贪嫂。因為編譯安裝增加了新模塊寺庄,而想要使新模塊運行起來,需要重啟nginx撩荣。單重新加載配置文件铣揉,你會發(fā)現(xiàn)它一直是不生效的。