基于Certbot为Nginx的Docker镜像添加HTTPS

Nginx是一个高性能的HTTP和反向代理web服务器,也是我本人在部署前后端项目时最常用的web服务器,无论是部署前端静态网站还是反向代理后端服务器,nginx都表现出无与伦比的便捷与高效。随着容器技术的普及,越来越多的应用开发者推出了官方Docker镜像,Nginx也不例外。本文教大家在Nginx官方镜像的基础上安装Certbot,让你的web应用随时随地插上https的翅膀。

Nginx官方Docker镜像简介

先上网站:
https://hub.docker.com/_/nginx

image.png

官网介绍了Nginx镜像的常用方法,有Docker基础的小伙伴使用起来很简单。构建好的镜像基本用法与官方镜像完全相同,具体的使用方法可以参考官网。

Certbot简介

先上网站:
https://certbot.eff.org/

image.png

Certbot可以为服务器免费申请及自动部署Let's Encrypt证书,支持大多数Linux发行版和web服务器(我记得另一个工具支持IIS,回头找找),在官网选择服务器软件及操作系统后,会出现使用教程,还是很贴心的。需要注意的是,Let's Encrypt证书有效期只有三个月,过期后访问网站会提示证书无效,所以需要定期更新或者配置自动更新,自动更新的方法在官网有教程。

在Nginx官方Docker镜像中安装Certbot

Certbot在生成证书时,会扫描/etc/nginx/conf.d/文件夹下的conf配置文件,将配置文件中的域名生成SSL证书并修改配置文件,所以如果应用部署在Nginx的Docker镜像中,则需要在镜像中安装Certbot。

当然可以选择每次部署应用时都安装一遍Certbot,但这违背了Docker的初衷。Docker的就是为了一次打包,随时使用,所以我们应该在Nginx镜像的基础上安装Certbot,并生成新的镜像上传至DockerHub。

先上Dockerfile

FROM nginx:latest

ADD https://dl.eff.org/certbot-auto /usr/local/bin/certbot-auto
RUN chown root /usr/local/bin/certbot-auto && \
    chmod 0755 /usr/local/bin/certbot-auto && \
    certbot-auto -n --install-only

这里用的是Debian8的安装方法(后来才知道Nginx镜像中的Linux版本是Debian9,不过没什么影响),而且走了很多弯路。一开始并不知道 --install-only这个参数,手动改了certbot-auto文件好久,就是为了只安装而不执行操作(官网教程并没有告诉我......)。certbot-auto是一个sh脚本,在certbot-auto文件里发现了--install-only这个参数,加上之后就可以只安装而不执行了。直到后来脑子突然反应过来,我TM应该先--help一下。不过这也不是一件坏事,读sh脚本可以学到很多东西,就当是交学费了。

由于国内你懂得的网速,镜像的构建需要相当长的时间,所以我把构建放在了DockerHub上,这是镜像地址:
https://hub.docker.com/r/yuhaow/nginx

使用方法

下载镜像
$ docker pull yuhaow/nginx
启动镜像
$ docker run -d -v /docker/nginx/conf.d:/etc/nginx/conf.d -v /docker/nginx/logs:/var/log/nginx -v /docker/nginx/letsencrypt:/etc/letsencrypt -v /etc/localtime:/etc/localtime:ro -p 80:80 -p 443:443 --restart=always --name nginx yuhaow/nginx

介绍一下这几个参数:

  1. -v /docker/nginx/conf.d:/etc/nginx/conf.d 挂载配置文件夹,方便添加及修改配置
  2. -v /docker/nginx/logs:/var/log/nginx 挂载日志文件夹
  3. -v /docker/nginx/letsencrypt:/etc/letsencrypt 挂载证书文件夹
  4. -v /etc/localtime:/etc/localtime:ro 修改镜像时区与服务器同步
  5. -p 80:80 -p 443:443 端口映射
生成证书
$ docker exec -it nginx certbot-auto --nginx

更新证书

$ docker exec -it nginx certbot-auto renew

至于自动更新,参考官网的crontab方案吧

想动手的小伙伴可以自己构建一下镜像,不想动手的话可以使用我构建成功的镜像,我会不定期nginx版本。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容