LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

内网穿透2.0:Cloudflare Tunnel + Nginx Proxy Manager 让你的NAS网络更上一层楼

admin
2025年12月26日 0:16 本文热度 631
最近有不少小伙伴问我,怎样才能更安全、更灵活地远程访问家里的NAS。今天我就来分享一套我觉得很不错的组合方案——Cloudflare Tunnel配合Nginx Proxy Manager。与其说这是一个教程,不如说是我对这套方案的一些心得体会。

全文四千字,预计阅读时间11分钟,可先收藏,实际安装时打开按照教程来一步步配置。


为什么要这样搭配?

说起来,我用Cloudflare Tunnel 代理已经有一段时间了。它的确很方便,点点鼠标就能配置,但越用越觉得有些不灵活。比如打开cloudaflare网页时有时因为网络环境会加载卡顿,比如我想安装Tinyauth来增强安全性,或者需要自定义一些Nginx的转发规则,就得SSH登录进去找配置文件硬改,这体验着实不太爽。
直到我接触到Nginx Proxy Manager(NPM),才发现有更好的办法。这个工具就像是给Nginx装上了一个友好的管理界面,让你可以在Web端直观地管理所有的代理规则,即便没有Nginx基础也能快速上手。
而Cloudflare Tunnel呢,它提供了一种零配置的内网穿透方案——不用开放任何端口,不用配置复杂的路由转发,只需要在NAS上运行一个轻量级的Agent,就能安全地暴露你内网的服务。两者结合起来,就像给你的家庭网络装上了一把坚固的锁,又保留了灵活调整的空间。

什么是Nginx Proxy Manager?


简单来说,Nginx Proxy Manager就是一个带着漂亮前端管理界面的Nginx反向代理服务器。它打包在Docker容器里,你可以用它来转发来自互联网的请求到你在家里运行的各种服务——无论是Plex、Emby、还是其他自搭建的应用。
而且NPM集成了Let's Encrypt,只要配置好域名,它会自动为你申请和续期证书,你完全不用操心证书过期的问题。而且它的操作界面真的很直观,即使是技术小白也能在几分钟内配置好一个代理。不过有用Cloudflare Tunnel的就不需要去配置这个功能。因为通过CF tunnel,你的链接直接是加密好的Https。它是适合有公网IP,直接暴露在公网上的用户。



什么是Cloudflare Tunnel?

我上次写过一篇几千阅读量的文章,就是介绍它的。
Cloudflare Tunnel:我的NAS内网免公网IP穿透终极方案
简单来说,
Cloudflare Tunnel是Cloudflare提供的一项服务,允许你在没有公网IP的情况下安全地将内网服务暴露到互联网。它的原理是在你的NAS上运行一个Tunnel Agent,这个Agent主动连接到Cloudflare的边缘网络,创建一条安全的隧道。所有访问你服务的流量都通过这条隧道,完全不需要你开放任何防火墙端口。
这对我来说最大的优点有两个:

  1. 无需公网IP - 不管你的运营商是否给分配公网IP都不影响
  2. 天然的DDOS防护 - 所有流量都经过Cloudflare的防护节点


两者怎么配合?

工作流程其实很简单:
流量流向: 互联网用户 → Cloudflare Tunnel → Nginx Proxy Manager → 内网服务
具体来说:

  • Cloudflare Tunnel负责把互联网的请求安全地传到你的NAS
  • Nginx Proxy Manager在NAS上接收这些请求,根据域名、路径等规则转发给各个内网服务

这样的好处是什么呢?你可以用一个Tunnel来承载多个服务,然后通过NPM来灵活地管理这些服务的转发规则。比如你想要给某个服务加认证、修改转发规则、或者重定向到新的服务器,只需要在NPM的Web界面改改配置就行,完全不需要登录CF的网站去修改。

安装Nginx Proxy Manager


1.创建Docker卷目录

在飞牛的Docker文件夹中创建以下目录结构:
docker/
└── npm/
├── data/ (存放NPM的数据)
└── letsencrypt/ (存放SSL证书)
└──mysql/(数据库)
(这是我的配置,大家参考一下)

2. 选择数据库

NPM需要一个MySQL数据库来存储配置信息。我建议按照GitHub上NPM的安装页面说明,使用MariaDB。
复制下面的docker-compose.yml
services:  app:    image: 'jc21/nginx-proxy-manager:latest'    restart: unless-stopped    ports:      # These ports are in format <host-port>:<container-port>      - '80:80' # Public HTTP Port      - '443:443' # Public HTTPS Port      - '81:81' # Admin Web Port      # Add any other Stream port you want to expose      # - '21:21' # FTP    environment:      TZ: "Asia/Shanghai"      # Mysql/Maria connection parameters:      DB_MYSQL_HOST: "db"      DB_MYSQL_PORT: 3306      DB_MYSQL_USER: "npm"      DB_MYSQL_PASSWORD: "npm"      DB_MYSQL_NAME: "npm"      # Optional SSL (see section below)      # DB_MYSQL_SSL: 'true'      # DB_MYSQL_SSL_REJECT_UNAUTHORIZED: 'true'      # DB_MYSQL_SSL_VERIFY_IDENTITY: 'true'      # Uncomment this if IPv6 is not enabled on your host      # DISABLE_IPV6: 'true'    volumes:      - ./data:/data      - ./letsencrypt:/etc/letsencrypt    depends_on:      - db
  db:    image: 'jc21/mariadb-aria:latest'    restart: unless-stopped    environment:      MYSQL_ROOT_PASSWORD: 'npm'      MYSQL_DATABASE: 'npm'      MYSQL_USER: 'npm'      MYSQL_PASSWORD: 'npm'      MARIADB_AUTO_UPGRADE: '1'    volumes:      - ./mysql:/var/lib/mysql

    (如果复制出现格式错误,可后台发送NPM,获取配置文件。)

3. 部署Docker容器

打开飞牛Docker应用,在Compose中选择创建项目,项目名可随意命名,就是未来的docker名,路径选择你刚刚新建的。
然后修改官方提供的端口映射:
本地端口 → 容器端口
1443 → 443
1080 → 80
1081 → 81
为什么用这些奇怪的端口号呢?因为80和443通常被飞牛本身占用了。如果我举例的这些端口有冲突,你可以用命令查一下,改成空闲的端口就好:
    netstat -tunlp | grep 端口号

    4. 启动并登录

    容器运行起来后,在浏览器输入 http://你的飞牛IP:1081,就能看到NPM的登录界面。
    第一次登录会创建管理员账号,账号会保存在本地,如果忘记了就算卸载重装NPM也还在,所以务必记好。



    安装Cloudflare Tunnel

    1. 在Cloudflare创建Tunnel

    登录你的Cloudflare账户,进入零信任(Zero Trust)控制面板,创建一个新的Tunnel。Cloudflare会给你一段Docker启动命令。

    2. 在NAS上运行Tunnel容器

    把Cloudflare提供的命令复制下来,在飞牛Docker里创建一个新容器。这个容器非常轻量,不需要太多配置,基本上拿到的命令直接用就行。

    3. 配置Tunnel路由

    Tunnel创建好后,你需要在Cloudflare的Tunnel管理界面配置路由。这里就是关键了:
    首先进入zero trust-网络-连接器页面
    复制好你的隧道名
    再进入DNS配置页面
    创建两个新的CNAME类型DNS解析,名称分别是*你的域名,内容则是<隧道号>.cfargotunnel.com
    再回到隧道配置中,添加一个新的配置,指向Nginx Proxy Manager:
    你的域名 → http://你的飞牛IP:1080
    这样,所有来自互联网访问你域名的流量,都会通过Cloudflare Tunnel进入你的NAS,然后被Nginx Proxy Manager接收和转发。



    在NPM中配置Proxy Host

    现在流量已经能进来了,接下来就是在NPM里配置代理规则。这一步很直观:

    1. 打开NPM的Web界面,点击"Proxy Hosts"

    2. 点击"Add Proxy Host",填入你要代理的内网服务信息

    配置示例:



    进阶玩法

    1. 多服务转发

    同一个域名下,可以根据不同的路径转发到不同的服务。比如:
    yourdomain.com/plex → 转发到Plex服务器yourdomain.com/emby → 转发到Emby服务器yourdomain.com/qbittorrent → 转发到qBittorrent

    2. 加入身份认证

    NPM支持集成Tinyauth或其他认证系统,这样可以在代理层面就加上身份认证,无需每个应用都配置。

    3. 自定义请求头

    某些应用可能需要特定的请求头。在NPM的"Custom Locations"或"Advanced"标签里,你可以添加自定义的Nginx规则。



    总结

    这套方案我用了一段时间,越用越喜欢。Cloudflare Tunnel提供了安全、稳定的内网穿透,Nginx Proxy Manager则让代理配置变得简单易用。相比之下,飞牛的内置反向代理虽然开箱即用,但在灵活性上确实差了一些。
    如果你也想折腾一下自己的NAS,想要更安全、更灵活的方式来远程访问家里的服务,不妨试试这个组合。相信我,一旦上手,你就会爱上这套流程。


    阅读原文:原文链接


    该文章在 2025/12/26 11:56:30 编辑过
    关键字查询
    相关文章
    正在查询...
    点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
    点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
    点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
    点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
    Copyright 2010-2026 ClickSun All Rights Reserved