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

2023-11-02

背景:

家里之前有个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,图形化界面方便部署和管理镜像;

安装步骤:

  • 部署完毕后,访问管理端口默认部署的话 8181是管理端口,路由器上将外网映射到这个docker的4443端口,外网均采用https前缀访问

端口映射

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

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

证书申请1

证书申请2

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

参考和其他说明:

  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填坑
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 使用 libusb 输出不正确

    我用libusb编写了一个程序 我怀疑输出是否正确 因为所有条目都显示相同的供应商和产品 ID 以下是代码 include
  • 在 Docker 容器中看不到 Django

    我想在一个简单的 Docker 容器中运行 Django 首先 我使用 Docker 文件构建了容器 里面没有什么特别的 只有 FROM RUN 和 COPY 命令 然后我用命令运行我的容器 docker run tid p 8000 80
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • 当 ssl 和 http2 打开时,Nginx 似乎忽略 server_name

    我有这个 nginx 配置 server listen 80 default server listen 80 default server server name www example com return 301 https www
  • Python 3.4.3 subprocess.Popen 在没有管道的情况下获取命令的输出?

    我试图将命令的输出分配给变量 而不让命令认为它正在通过管道传输 原因是 如果正在通过管道传输 则相关命令会给出未格式化的文本作为输出 但如果从终端运行 则会给出颜色格式化的文本 我需要获取这种颜色格式的文本 到目前为止我已经尝试了一些事情
  • Docker Hub API v2 令牌身份验证问题

    目前 我正在开发一个非常轻量级版本的 Docker 容器编排器 并且我必须能够从公共 Docker Hub 注册表获取图像摘要 我想使用 Docker Registry API v2 来实现此目的 我正在尝试使用以下 API 调用获取授权令
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • 如何在不使用 IDE 的情况下在 Linux 上运行 Java 项目

    我是 Java 新手 基本上 我开发了一个java项目 其中包含Eclipse中的多个Java包 该项目在我安装了 redhat Linux 的桌面上运行正常 然而 我需要在一个更强大的没有安装X11的Linux服务器 redhat ent
  • 无法使用 docker build 运行 gradle 包装器

    我有这个小构建 FROM eclipse temurin 17 jdk as build java COPY java project root project WORKDIR root project RUN chmod x gradle
  • 如何才能将 TCP 连接返回到同一端口?

    机器是 RHEL 5 3 内核 2 6 18 有时我在 netstat 中注意到我的应用程序有连接 建立了 TCP 连接本地地址 and 国外地址是一样的 其他人也报告了同样的问题 症状与链接中描述的相同 客户端连接到本地运行的服务器的端口
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • docker repo 解决映像构建期间的错误错误(检查存储库文件)

    我在构建 docker 映像时遇到问题 并尝试了不同的 DNS 选项 但似乎运气不佳 Docker版本1 9 1 构建a34a1d5 回购还活着 为了运行我使用的容器docker run dns 192 168 1 1 d ti name
  • 如何从 Docker Hub 删除存储库

    如何从 Docker Hub 完全删除存储库 Docker 正在快速发展 他们的网站也是如此 这是从 docker hub Web 界面删除存储库的最新方法 首先 确保您已登录 hub docker com Simple 单击顶部的存储库链
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • Nginx 配置文件在 Elastic Beanstalk 部署期间被覆盖?

    我需要将 p3p 标头添加到标准 Nodejs 和 Nginx Elastic Beanstalk 上的静态资源位置 我创建了一个ebextension脚本如上所解释这个问题 https stackoverflow com question
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 非生产模式下的 Elasticsearch docker 容器可消除 vm.max_map_count=262144 要求

    如何配置 elasticsearch docker 容器 elasticsearch 7 5 0 以使用更少的资源并在非生产模式下运行 我想在 Jenkins 和我的桌面上运行容器 并且满足以下要求这个弹性文档 https www elas
  • Nginx 502 网关错误。通过增加buffer来解决。为什么?

    我正在设置 LEMP 堆栈来运行 Drupal 我安装了 Nginx 和 PHP FastCGI Nginx 工作正常 但任何运行 PHP 的尝试都会出现错误 502 Bad Gateway 谷歌很快发现 nginx 502 错误网关 ht
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下

随机推荐