前言:
letsencrypt,是一个不错的集成反向代理,以及自动签发SSL 通配的工具,此次教程的内容有点多,希望大家能消化的进去。
教程:
在使用之前我们先简单了解一下letsencrypt,这个工具的基本要求。
- 此工具支持验证的方式只有三种、TLS-SNI/HTTP/DNS
- 在国内以上三种方式,我们只能使用DNS
- 支持的DNS 服务商有很多,现在容器内支持的配置文件中,aliyun是一个不错的选择
此次教程的东西:
自备域名一个 | aliyun账号一个 |
- 域名处理
这里有两种情况,第一种是你已经永久在阿里云的域名,你可以跳过域名处理这个部分,如果没有,我们需要把在其他服务商购买的域名,使用阿里云的DNS 服务器解析服务(希望这么做阿里不会打死我)
- 演示:
这里我就是属于第二种,这里我只演示腾讯云(DNSPOD)购买的域名,其他服务商购买的域名也是一样的,都可以修改自己想用的DNS服务商来解析自己的域名。
登录阿里云,控制台-云解析DNS:
输入域名后,他会提示你配置DNS
阿里云的DNS 服务器地址为:
ns1.alidns.comns2.alidns.com
我们登录到腾讯云,控制面板-域名注册:
注意:
常规来说修改解析服务器全球生效需要72小时!但是本人亲测,30分钟左右 国内就可以更换完成,就可以使用阿里云进行解析了。
获取阿里的KEY:
记录到KEY两个数值之后,保存下来我们后期会用得到。
- 配置letsencrypt的docker模板:
我们在unRAID的APPS内搜索letsencrypt,点击下载配置模板!
按照上面的图片配置完成后,APPLY 开始下载镜像配置容器。
等待容器启动完成后,我们停止容器,对DNS-Plugin 进行配置。
默认的路径:/mnt/user/appdata/letsencrypt/dns-conf
我们可以用SSH命令修改,或者是可到云,方法大家自己寻找,我这里使用可到云进行演示:
把我们获取到的阿里云的KEY 粘贴到对应的位置:
粘贴好以后、保存我们回到unRAID的主页面,对docker进行启动。
启动后,我们查看docker的日志:
获取到的证书存放位置:
ssl_certificate /config/keys/letsencrypt/fullchain.pem; ssl_certificate_key /config/keys/letsencrypt/privkey.pem; 注意这里是容器内的路径,对应的外部路径为:/mnt/user/appdata/letsencrypt/keys/letsencrypt/
到此证书获取,就已经完成!我们可以把这个路径映射到其他容器的内部,做到其他容器同时更新KEY,或者单独拷贝来手动移动都可以。
注意:第一次有一定几率日志中会出现错误,这里我们不要慌张,是因为解析的信息,DNS服务器还未生效,我们在一次启动失败之后等一小会,重启一下容器即可,如果还是出现错误,仔细分析日志,注意阿里云的KEY书写,还有KEY的正确性。
- 反向代理:
这里还是要感谢lsio的大神们,在容器里面内置了大量的反向代理配置文件,如果你需要反向代理的服务端,在配置文件下面有,你就不需要去自己去配置反向代理的繁琐参数,简单配置一下目标服务器即可直接使用。
这里我用前两天刚搭建的Rocker.chat进行演示,这个服务端,容器内没有内置配置文件所以我这里提供一个。在针对内容进行修改。
server { listen 443 ssl; server_name rocketchat.*; #访问的url 示例:server_name rocketchat.xxx.com; server_name www.xxx.com/rocketchat; include /config/nginx/ssl.conf; client_max_body_size 0; location / { resolver 127.0.0.11 valid=30s; set $upstream_app Rocket.Chat; #被代理服务的ip或者url 示例:set $upstream_app 192.168.1.2; set $upstream_port 3000; #被代理的服务器访问端口 set $upstream_proto http; #被代理服务器的访问协议(一般是默认的) proxy_pass $upstream_proto://$upstream_app:$upstream_port; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto http; proxy_set_header X-Nginx-Proxy true; proxy_redirect off; } } server { listen 80; server_name rocket.*; return 301 https://$host$request_uri; }
在/mnt/user/appdata/letsencrypt/nginx/proxy-confs 创建一个rocketchat.subdomain.conf的文件 把上面的内容粘贴进去。
之后返回到unRAID的面板,对letsencrypt容器进行重启。
重启之后使用https://domain.com:prot 进行访问 (domian.com是一个示例请勿照抄)
在proxy-confs路径下有很多预制好的配置文件,我们针配置文件进行修改之后,我们需要修改掉他的后缀把sample删掉,以.conf结尾,然后重启容器,才可以生效!
注意:在写入配置文件的时候注意配置文件的缩进,在实际使用中最好删除我写的配置备注,一面出现启动错误的情况!!!
小科普:
反向代理,可以端口复用,所有url可以使用一个端口进行访问,可以使用不同的二级域名进行拆分需要访问的服务器,比如:
dns.domain.com , ros.domain.com 等等。。。。。 还可以使用 www.domain.com/dns , www.domain.com/ros 来进行访问不同的服务端,这里我演示的方式 是使用了默认的端口,在实际应用中我们访问还需要在后面增加上通讯端口才可以,也可以在反向代理服务器加上验证的密码。来保护一些 web服务器没有密码验证的问题。
结尾:
希望这个教程在大家使用反向代理的时候能帮到大家,内置的大部分我们常用的反向代理配置文件,按照我上面的示例配置文件进行更改即可,或者自己写一个根据自己需求的也是可以的。
最后祝大家玩的愉快,如有什么问题,可以在下面留言或者来qq群里面聊。
评论(1)
路径映射该如何使用啊?