尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

在 Nginx Docker 官方镜像中编译并加入第三方模块 - 教程

在 Nginx Docker 官方镜像中编译并加入第三方模块 - 教程
📅 发布时间:2026/6/22 13:28:16

在启用 Nginx 官方 Docker 镜像时,默认不包含第三方模块。假如我们希望实现根据国家或城市限制 IP 访问 等功能,就需要手动编译并添加第三方模块。本文以 ngx_http_geoip2_module 为例,详细介绍如何在 Nginx Docker 容器中完成编译和使用。​​​​​​

一、问题背景

  • Nginx 官方 Docker 镜像比较精简,默认删除了编译依赖。

  • 一些第三方模块(如 GeoIP2)需要依赖库支持。

  • 因此要求修改 Dockerfile,让镜像保留构建设备,再进入容器编译安装模块。


二、基础镜像准备

  1. 下载官方镜像文件

  • Docker Hub 官方 Nginx 镜像库:https://hub.docker.com/_/nginx

  • GitHub 官方 Nginx Docker 资料:https://github.com/nginxinc/docker-nginx/

  1. 修改 Dockerfile

  • 进入 docker-nginx-master/mainline/debian 文件夹。

  • 编辑 Dockerfile,将清理安装包的语句替换为安全占位符,例如:

    RUN touch 1.txt && rm -rf 1.txt

  1. 构建镜像

docker build -t nginx-geoip2:1.21.3 .


三、准备依赖与源码

  • Nginx 同版本源码包:http://nginx.org/download/
    nginx-1.21.3.tar.gz

  • GeoIP2 模块源码包:
    https://github.com/TravelEngineers/ngx_http_geoip2_module
    ngx_http_geoip2_module-master.zip

  • GeoIP2 依赖库(libmaxminddb):
    https://github.com/maxmind/libmaxminddb/releases
    libmaxminddb-1.6.0.tar.gz

  • MaxMind GeoIP2 数据库:

    • GeoLite2-Country_20211005.tar.gz

    • GeoLite2-City_20211005.tar.gz


四、容器内编译安装

  1. 启动容器

docker run -d -t --name nginx --restart=always -p 80:80 nginx-geoip2:1.21.3

  1. 复制文件到容器

docker cp libmaxminddb-1.6.0 nginx:/

docker cp ngx_http_geoip2_module-master nginx:/

docker cp nginx-1.21.3 nginx:/usr/local/

  1. 安装依赖库 libmaxminddb

apt update && apt install -y build-essential make

cd libmaxminddb-1.6.0/

./configure && make && make check && make install

ldconfig

  1. 准备模块目录

mkdir -p /usr/lib/nginx/nginx-geoip2

mv /ngx_http_geoip2_module-master /usr/lib/nginx/nginx-geoip2/ngx_http_geoip2_module

  1. 安装 Nginx 编译依赖

apt-get install -y libpcre3 libpcre3-dev libssl-dev zlib1g-dev

/usr/sbin/nginx -V # 查看原始编译参数

  1. 重新编译 Nginx,添加模块

cd /usr/local/nginx-1.21.3

./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx \

...原有参数... \

--add-module=/usr/lib/nginx/nginx-geoip2/ngx_http_geoip2_module

make

cp /usr/sbin/nginx /usr/sbin/nginx-no-geoip2

cp /usr/local/nginx-1.21.3/objs/nginx /usr/sbin/nginx

  1. 验证是否成功

docker restart nginx

docker exec -it nginx /bin/bash

/usr/sbin/nginx -V # 输出应包含 geoip2 模块

ldd /usr/sbin/nginx # 应包含 libmaxminddb.so.0


五、配置 GeoIP2 数据库

  1. 导入 MaxMind 数据库

tar -zxvf GeoLite2-Country_20211005.tar.gz

tar -zxvf GeoLite2-City_20211005.tar.gz

docker cp GeoLite2-City_20211005/GeoLite2-City.mmdb nginx:/usr/share/nginx/

docker cp GeoLite2-Country_20211005/GeoLite2-Country.mmdb nginx:/usr/share/nginx/

  1. 修改 Nginx 配置文件
    在 nginx.conf 中添加:

load_module modules/ngx_http_geoip2_module.so;

http {
geoip2 /usr/share/nginx/GeoLite2-Country.mmdb {
$geoip2_country_code default=US source=$remote_addr country iso_code;
}

server {
listen 80;

location / {
if ($geoip2_country_code ~ (US|NL|GB)) {
return 403;
}
root /usr/share/nginx/html;
}
}
}

  1. 验证配置

nginx -t

nginx -s reload

相关新闻

  • 计算机毕业设计springboot考研资讯管理系统 基于Spring Boot的考研信息管理平台设计与达成 Spring Boot驱动下的研究生入学考试资讯管理系统开发
  • 【IEEE出版 | 南工大主办 | 稳定EI检索】第二届自动化、电气控制系统与设备国际学术会议(AECSE 2025)
  • Matlab通过GUI建立点云的最远点下采样(Farthest point sampling)

最新新闻

  • 2026 年 6 月万国维保网点实地核验报告,全国门店地址汇总(北京上海广州深圳网点地址名录公示) - 万国中国服务中心
  • 长效防静电・高承重耐腐|中天陶瓷防静电地板全解析 - 江苏中天庄美荃
  • 渭南市富平县2026年黄金回收本地靠谱门店 白银回收+铂金回收门店指南TOP5排行榜 优选门店汇总及电话地址推荐 - 盛世金银回收
  • Java国密SM4算法实战:从原理到ECB模式加解密完整实现
  • COMMIT与ROLLBACK不是按钮,而是事务生存机制
  • Sunshine游戏串流完整指南:打造你的家庭游戏共享中心

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号