为码头工人中的nginx配置https的方法步骤

  

没有https加持的网站会逐渐地被浏览器标记为不安全的,所以为网站添加https已经变得刻不容缓。对于商业网站来说,花钱购买SSL/TLS证书并不是什么问题。但对于个人用户来说,如果能有免费的SSL/TLS证书可用将会是非常幸福的事情!咱们就加密是一个提供免费SSL/TLS证书的网站,由于其证书期限只有三个月,所以需要我们用自动化的方式去更新证书。本文将介绍如何为通过码头工人运行的nginx中的站点添加https支持,并自动完成证书的更新。本文的演示环境为:运行在Azure上的Ubuntu 16.04主机(此图来自互联网):

  

为码头工人中的nginx配置https的方法步骤

  

  

在Azure上创建Ubuntu类型的虚机事件非常容易的事情,安装码头工人也无须赘言。比较容易忽略的是配置合适的网络安全组规则,比如打开80和443端口:

  

为码头工人中的nginx配置https的方法步骤

  

还有就是配置DNS:

  

为码头工人中的nginx配置https的方法步骤

  

  

简单起见,直接使用一个镜像中的nodejs应用作为web站点:

        码头工人拉ljfpower/nodedemo美元   码头工人网络创建美元- d webnet桥梁   码头工人美元运行- d——重启=总是暴露=3000 \   ——网络=webnet name=myweb \   ljfpower/nodedemo      

在用户的家目录下创建nginx目录及其子目录conf.d,相依。crt和html,创建日志目录及其子目录nginx和letsencrypt:

        mkdir - p nginx美元/{conf.d conf.crt, html}   mkdir - p日志美元/{nginx, letsencrypt}      

说明,本文演示的示例中需要我们手动创建的文件和目录结构如下:

  

为码头工人中的nginx配置https的方法步骤

  

创建nginx/nginx。参看文件,内容如下:

        用户nginx;   worker_processes汽车;      error_log/var/log/nginx/error.日志警告;   pid/var/run/nginx.pid;      事件{   worker_connections 2048;   }      http {   包括/etc/nginx/mime.types;   default_type应用程序/八进制;      sendfile>   上游网络{   服务器myweb: 3000;   }   服务器{   听80;   听[:]:80;   server_name filterinto.com www.filterinto.com;      ^ ~/位置。众所周知/acme-challenge/{   default_type“text/plain”;   根/usr/share/nginx/html;   }   位置=/V谒苤?acme-challenge/{   返回404;   }   位置/{   proxy_pass http://web;   }   }      

其中/V谒苤?acme-challenge目录是certbot工具在生成证书时创建的。接下来创建文件nginx/html/索引。html文件,内容如下:

        & lt; !DOCTYPE html>   & lt; html>   & lt; head>   & lt;元charset=" utf - 8 "/比;   & lt; title>让我们第一次加密证书问题Site   & lt;/head>   & lt; body>   & lt; h2>你好HTTPS ! & lt;/h2>   & lt; p>   只是第一次使用SSL证书签发加密的   certbot。   & lt;/p>   & lt;/body>   & lt;/html>      

这个页面也是certbot在生成证书时需要用到的。最后让我们启动容器(在用户的家目录下执行下面的命令):

        码头工人美元- d \运行   - p 80:80 \   - v $ (pwd)/nginx/conf.d:/etc/nginx/conf。d: ro \   - v $ (pwd)/nginx/nginx.conf:/etc/nginx/nginx。相依:ro \   - v $ (pwd)/日志/nginx:/var/log/nginx \   - v $ (pwd)/nginx/html:/usr/share/nginx/html \   ——重启=总是\   - - - name=网关\   ——网络=webnet \   nginx: 1.14      

注意:这时没有映射443端口,也没有挂载存放证书的目录。只能以http协议访问访问我们的站点:

  

为码头工人中的nginx配置https的方法步骤

  

  

让我们加密是一个提供免费SSL/TLS证书的网站,它为用户提供了certbot工具用来生成SSL/TLS证书。方便起见,我们把certbot简单的封装到容器中。在用户的家目录下创建certbot目录,进入certbot目录并把下面的内容保存到Dockerfile文件中:

为码头工人中的nginx配置https的方法步骤