在unraid里装Nginx Proxy Manager实现内部Web服务SSL加密

2024-04-08 17:56:11 2点赞 16收藏 13评论

nginx使用多年,本来想手动的,年纪大了越傻瓜化越好,试验了用Nginx Proxy Manager(下面简称NPM)反向代理实现家里内部的web HTTP服务全部SSL化,主打一个安全(HTTPS)、简单(有界面)、方便(不用记和映射那么多端口了)。记录一下几个核心过程:

DDNS

申请的是aliyun的域名,aliyun支持*通配符域名解析和API更新记录(后台申请Access Key ID、Access Key Secret,记下来,后面两个地方要用),这里的技巧是把*.x.x.x通配CNAME解析到x.x.x上,然后ikuai里高级应用 > 动态域名,填入动态更新x.x.x域名的相关信息,这样拨号ip一变就自动更新DNS了;通过*.x.x.x可以在NPM里匹配不同的Web服务

在unraid里装Nginx Proxy Manager实现内部Web服务SSL加密

安装NPM

在unraid的Apps里搜"Nginx-Proxy-Manager-Official",安装即可。NPM是个docker应用,需要用到80、443、81端口(81是内部管理端口),网络只能选择自定义的br0。在unraid里面部署NPM也踩到一点坑,一并记录一下:

  • 坑一:unraid使用旁路由作为网关的情况下,用默认的bridge模式外部无法访问应用

    • 解决办法1:用host模式,即侵入了unraid的端口,不是很推荐,但方便;但对于NPM这种用80、81、443口的服务不适用

    • 解决办法2:用macvlan自定义网络模式,即相当于给应用配置unraid同网段ip。这里有坑的是我的局域网也是172.17开头的,这和docker默认bridge的网段重合,所以没法用docker network create,都得在unraid的界面里配,我给ip段(DHCP池)配了172.17.x.192/26;另外得把Host access to custom networks打开,不然访问不到

  • 坑二:unraid用DHCP获取的DNS,docker实例里面很大可能没有办法正确解析域名

    • 解决办法:unraid配置主网络那里,dns选static,写死

SSL证书

NPM里内置了Let's Encrypt的免费SSL域名证书(对*.x.x.x通配域名进行申请),通过DNS验证可以申请(在箭头所指的地方填入前面aliyun的Access Key ID、Access Key Secret)。证书90天有效,到期前应该会自动更新。

在unraid里装Nginx Proxy Manager实现内部Web服务SSL加密

配置反向代理

最后,就可以在NPM的Hosts里面添加配置反向代理,Domain Names填入域名x.x.x.x(因为我们之前用的通配符申请的域名证书,可以通过这个区分访问不同的web服务),Forward Hostname和Port填入内网web的对应信息,箭头所指的SSL里面选择刚才的域名证书*.x.x.x

在unraid里装Nginx Proxy Manager实现内部Web服务SSL加密

配置端口映射

家用宽带运营商禁封了80和443端口,只能在ikuai里配置其他端口映射到NPM这个应用的443,比如4444。最终,可通过 https://x.x.x.x:4444/ 访问内部Web服务,即通过NPM实现了SSL加密和对外访问,不需要记住每个服务的ip和端口,记住子域名即可。

默认首页

NPM其实还可以设置默认首页(Setting > Default Site),把他设置成所有内部Web服务的访问链接。即选择“Custom Page”,页面内容就一个简单的跳转列表:

在unraid里装Nginx Proxy Manager实现内部Web服务SSL加密

这样只需要访问首页一个地址即可,连子域名都不用记了。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
13评论

  • 精彩
  • 最新
  • 有个问题,macVLAN模式,你是怎么把npm的ip绑定域名的?npm里面再安装一个ddnsgo吗?你的ddns域名解析应该是安装在unraid里面的docker吧,这个是unraid ip,你是怎么绑定npm的ip的到域名的

    校验提示文案

    提交
    前面有写 ddns是软路由ikuai实现的

    校验提示文案

    提交
    收起所有回复
  • 你好 up 主 我也是 unraid 用的旁路由网关 npm 用 br0 设置和 unraid 的同一个网段 但是反代的网页报 bad gateway 不知道是不是旁路由的原因 up 写的那一段没太看明白, 能否详细再说说 谢谢

    校验提示文案

    提交
    反代什么服务 有些服务默认会禁用反代 比如HA

    校验提示文案

    提交
    你好up主,谢谢你的回复。我的docker应用是jellyfin,filebrower,guacamole都报bad gateway。是不是因为旁路由的原因?我network用的br0,unraid的网关是旁路由。

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 坑一:unraid使用旁路由作为网关的情况下,用默认的bridge模式外部无法访问应用
    这个问题困扰了我好久了
    解决办法一,有的容器支持改host 放弃
    解决办法二,划网段,单网口可以实现吗?

    校验提示文案

    提交
    有些容器可以支持 有些怎么都不行 我后来也没搞了

    校验提示文案

    提交
    收起所有回复
  • 我用br0打不开后台

    校验提示文案

    提交
  • 老哥 坑一的解决办法2 能详细说一下吗?

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
16
扫一下,分享更方便,购买更轻松