参考代码
https://gitee.com/xiaoyun461/blocking-external-networks
首先 需要的依赖:
libmaxminddb
https://github.com/maxmind/libmaxminddb
maxmind-geoip
https://github.com/Dreamacro/maxmind-geoip
libmaxminddb
需要gcc
编译,可用 Dockerfile
里面编译生成so文件,然后复制到 openresty/openresty:centos-rpm
镜像中,然后把 Country.mmdb
(Ip数据库) 也复制到镜像中
Dockerfile 如下:
############## 构建 libmaxminddb #####################
FROM gcc:9 AS libmaxminddb-build
ADD lib/libmaxminddb-1.8.0.tar.gz /
WORKDIR /libmaxminddb-1.8.0
RUN ./configure && make && make install && ldconfig -v && ls -f /usr/local/lib/libmaxminddb*
############## 构建 openresty #####################
FROM openresty/openresty:centos-rpm
ENV TZ Asia/Shanghai
COPY --from=libmaxminddb-build /usr/local/lib/libmaxminddb.so.0.0.7 /lib64
COPY geoip/20231212/Country.mmdb /etc/nginx/mmdb/Country.mmdb
RUN ln -snf /usr/share/zoneinfo/"$TZ" /etc/localtime && echo "$TZ" > /etc/timezone \
&& opm get anjia0532/lua-resty-maxminddb \
&& ln -s /lib64/libmaxminddb.so.0.0.7 /lib64/libmaxminddb.so \
&& ldconfig -v
然后配置lua脚本,OpenResty(也称为 ngx_openresty)是一个基于 Nginx 与 Lua 的高性能 Web 平台,
lua脚本如下: