docker部署nginx-proxy-manager,图形化管理nginx反向代理,实现不同子域名访问家庭搭建的各类服务

背景:

家里之前有个QNAP 的NAS,2022年过年时候QNAP发布了漏洞声明,建议纯域名访问NAS规避漏洞,这算是个契机,外加自己爱折腾,就将之前采用的、在路由器上使用不同端口映射各类服务,改为nginx反代——统一访问端口,但通过不同子域名访问。这避免了IP直接访问NAS的问题。做这个反代,还有个想法是把bitwarden在docker中也做起来,之前测试部署这个好像也需要反代。

搭建前提:

  1. 动态公网IP:电信宽带可以申请ip v4的动态公网IP,打10000号申请,移动和联通是不行的;
  2. DDNS(动态域名解析):我从阿里万网上买的tech后缀的便宜域名,199买了10年的,配合软路由上aliDDNS解析,或者部署aliddns的docker都可以实现动态域名解析。
  3. docker环境:群辉 NAS,QNAP NAS,或者linux系统,ikuai/openwrt软路由系统等,都可以安装docker环境。推荐 NAS或者软路由上安装docker,图形化界面方便部署和管理镜像;

安装步骤:

  • docker中,下载镜像:jlesage/nginx-proxy-manager
  • 创建容器时,参考说明 jlesage/nginx-proxy-manager - Docker Image | Docker Hub ,映射下文件夹就好了。一般使用,这个文件夹映射都可以不做。
docker部署nginx-proxy-manager,图形化管理nginx反向代理,实现不同子域名访问家庭搭建的各类服务_第1张图片
  • 部署完毕后,访问管理端口默认部署的话 8181是管理端口,路由器上将外网映射到这个docker的4443端口,外网均采用https前缀访问
docker部署nginx-proxy-manager,图形化管理nginx反向代理,实现不同子域名访问家庭搭建的各类服务_第2张图片

docker部署nginx-proxy-manager,图形化管理nginx反向代理,实现不同子域名访问家庭搭建的各类服务_第3张图片

端口映射

  • 访问nginx管理地址进行反代配置,访问地址是 http://dockerIP:8181。默认账号密码是 [email protected] 密码是 changeme 登陆进去后修改邮箱和密码,后续用新的邮箱和密码登陆即可

docker部署nginx-proxy-manager,图形化管理nginx反向代理,实现不同子域名访问家庭搭建的各类服务_第4张图片

  • 进去后,先通过Let's Encrypt申请泛域名的证书,假设我的域名是 http://abc.com,那申请证书就使用*.http://abc.com 来申请,这样后续任何子域名https访问都是没问题的了,例如 book.abc.com

docker部署nginx-proxy-manager,图形化管理nginx反向代理,实现不同子域名访问家庭搭建的各类服务_第5张图片

证书申请1

docker部署nginx-proxy-manager,图形化管理nginx反向代理,实现不同子域名访问家庭搭建的各类服务_第6张图片

证书申请2

  • 这里有个小bug,申请界面会一直转圈转几分钟到超时,实际已经申请成功了,F5刷新下界面,就可以考到类似上图“证书申请1”中的泛域名证书了,这个证书给后面所有的子域名配置。docker作者的文档提到证书在到期一个月前会自动续期,到时继续观察下这个流程是否丝滑。。
  • 基础准备完后,就开始配置子域名的解析,在阿里云(或你的域名商)域名管理界面,将所有子域名都配置CNAME到根域名,例如http://book.abc.com就CNAME到http://abc.com
  • 然后在nginx界面配置所需的子域名反代,就OK了
docker部署nginx-proxy-manager,图形化管理nginx反向代理,实现不同子域名访问家庭搭建的各类服务_第7张图片

参考和其他说明:

  1. 除了阿里云买域名实现DDNS,腾讯云DNSPod买域名也可以实现,只是我习惯了阿里云的DDNS,腾讯云详见 使用docker搭建nginx proxy manager实现反向代理和SSL证书申请 - 哔哩哔哩 (bilibili.com)
  2. B站有Up主介绍nginx-proxy=manager这个应用,有兴趣可以听听前面的功能介绍,后面的要买VPS什么的没必要,是另外个套路了,另外不建议在阿里云或腾讯云之外买域名,没有现成的插件或者docker,DDNS估计都会很头疼。【Docker系列】一个反向代理神器——Nginx Proxy Manager_哔哩哔哩_bilibili
  3. 这个应用图形化管理很方便,有个小坑建议填填,无需ssh工具,docker命令行界面进去修改proxy.conf文件即可,详见:nginx-proxy-manager填坑

你可能感兴趣的:(nginx,docker,linux)