Skip to main content

反代教程之内网服务拥有自己的专属域名

6 min read

我将详细讲解如何使用 Docker 和 Nginx Proxy Manager,配合 Cloudflare 的 DDNS 服务,来实现访问内网服务。

准备事项​

  1. Docker环境 (不管你是什么nas软路由都有这玩意吧 咱们需要的工具很简单 直接docker命令安装)
  2. CloudFlare账号 (我们是要开ssl的!必须用这个 毕竟泛域名15年免续签 你域名过期了 证书都不会过期 阿里云用户把dns解析转到cf谢谢 ) (暂时可以了解一下 源证书目前不适用本教程 因为CloudFlare的自签证书不开小云朵不给用)

注册CloudFlare账号

https://dash.cloudflare.com/sign-up

  1. 公网V4或开启IPV6 (V6用户需要另一端也开启V6地址才能访问 手机流量已经普及 你公司网络可不一定哦~)
  2. 安装DDNS-Go (不要用爱快自带的 不要问我为什么 必须用这个!!!!)
  3. 安装NginxProxyManager (简称NPM 咱们就靠这个来反代 这工具简单还稳定 nginx也行 但我觉得对新人来说没这么方便)

安装DDNS-GO​

  1. Linux一键安装命令

Linux系统默认安装到opt目录 直接复制粘贴到你Linux的终端里运行即可

docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go
  1. 群晖一键安装命令 本文全程按照群晖Nas示范 所以你需要把安装命令里的路径给替换掉 /opt/ddns-go 更换成 /volume1/docker/ddnsgo image.png 如果你跟我一样的习惯 可以直接调用以下命令
docker run -d --name ddns-go --restart=always --net=host -v /volume1/docker/ddnsgo:/root jeessy/ddns-go
  1. 群晖Nas安装教程

imaged604d5e88153d0a5.png

image15bc361ca7a2a77f.png

image6816b4633c6c9c7e.png

image7b4b503058cbebbc.png

image1479e357422d3850.png ps:

  • 我不确定群晖是否会自动给你创建文件夹(已确定会自动创建文件夹) 为了一次性成功不报错 请先去docker文件夹下创建ddnsgo的文件夹
  • 计划任务运行后不要急着删除 其实可以一直留着 方便以后再次命令安装docker或执行其他需要用到root的命令 就算他重启后自动再次运行一遍 只要你没有删除那个容器 不会有任何问题 一样正常使用的 不放心再删掉

CloudFlare获取API​

API获取好了复制发微信或记事本里存着 以后长期都需要用到。

image2fcffcb9d5a1b038.png

image378717908dc3caaa.png

image2a04407bfa54a710.png

image654fa55cf6b155ce.png

imageaad192c874f41966.png

imagec00ced5fe90533df.png

image712d1de70881464e.png

image3e67136a7adfd9eb.png

安装NginxProxyManager​

按照上面安装ddnsgo的方法 再次安装npm 所以那个创建好的计划任务别急着删!!!这里复制好粘贴进去

这个我就不提供Linux默认安装的命令 我来解释每一行的参数代表什么意思 Linux用户只需要根据我对各个参数的解释 你自己想怎么改就怎么改就行了

Nas用户必须给我理解下面啥意思 我会逐条解释 我就不信你懂不了!

docker run -d \
--name nginxmanager \
-p 8080:80 \
-p 81:81 \
-p 888:443 \
-v /volume1/docker/npm:/data \
-v /volume1/docker/npm:/etc/letsencrypt \
--restart=always \
jc21/nginx-proxy-manager

当您运行上述的Docker命令时,每一行的含义如下:

  1. docker run -d: 运行一个新的容器。
  2. --name nginxmanager: 指定容器的名称为 "nginxmanager"。
  3. -p 8080:80: 将主机上的端口8080映射到容器内的80端口。这样,您可以通过 http://localhost:8080 访问NginxProxyManager的HTTP端口。
  4. -p 81:81: 将主机上的端口81映射到容器内的81端口。这样,您可以通过 http://localhost:81 访问NginxProxyManager的后台管理界面。
  5. -p 888:443: 将主机上的端口888映射到容器内的443端口。这样,您可以通过 https://localhost:888 访问NginxProxyManager的HTTPS端口。
  6. -v /volume1/docker/npm:/data: 将主机上的目录 /volume1/docker/npm 映射到容器内的 /data 目录。这样,您可以在主机上持久化存储NginxProxyManager的数据。
  7. -v /volume1/docker/npm:/etc/letsencrypt: 将主机上的目录 /volume1/docker/npm 映射到容器内的 /etc/letsencrypt 目录。这样,您可以在主机上持久化存储NginxProxyManager的证书。
  8. --restart=always: 设置容器在启动时自动重启。
  9. jc21/nginx-proxy-manager: 使用镜像 jc21/nginx-proxy-manager 来创建容器。

重点就是映射路径需要改到你群晖对应的存储空间 我是拿默认的存储空间1(/volume1)放置docker 大部分人其实照抄就完事了 有的人docker的共享文件夹不在存储空间1上 你就直接改数字就完事了 后面的保持不动就完事了

然后就是我把http的端口改到了8080 https端口改到了888 来应对80跟443端口都被封掉了情况 这样我们直接把nas的ip的8080 888端口对应的转发到公网就完事了 还不懂我要杀人了!!!

配置NginxProxyManager​

装好后点开面板即可查看这个容器创建好并自动运行了 打开你Nas的ip+81端口即可访问面板后台 默认账号admin@example.com,密码:changeme image3b4056d8e156096e.png 登陆上去了会强制改邮箱跟密码 按照提示改就好

image742fe97b744e451f.png

  • 教程都快写完了发现CloudFlare的15年自签证书翻车了 那证书不开小云朵不给你用的 emby nas这种套了cf的cdn还能用啊 卡得一批 被我紧急取消了 那个大家可以了解性的学习下 我暂时不提供更高级别的教程 影响不好 想学可以去别处 我们还是根据网上的传统教程申请

  • 申请 Let's Encrypt 三个月的证书

image.png

image79f0b322a141793f.png

  • 接下来我们就可以开始反代内网服务到公网了

imagebe8925d382633e54.png

举例我的qb地址为:http://192.168.31.1:8080

image96e87f75fc70a23d.png

  • 截图IP打错了不要在意这些细节

image8572058c05de2eba.png

imagef1121d60e5c782a1.png

  • 到这就结束了 其他反代内容根据这一举例 自行添加。

路由器端口转发​

到了最后一步了 不管你是硬路由还是软路由 端口转发不需要我多教吧?

  • 把Nas的ip的http的端口 8080转到8080
  • https的端口888 转发到888

到了这一步 都知道443 80的内网端口也是可以转成任意端口的 但还是那句话 为了严谨长期保持稳定 避免未知服务抢占80 443端口 群晖的webstation就是会这样干的。。。所以不要来质疑我为啥这样教大家 咱们开启域名访问的好处也不止是方便访问 而是开启ssl!https没有烦人的警告了也更安全。

imagef2ea23fdc219f9a1.png

最后测试​

  • 以上都做完了 默认cf不需要再改动什么操作了 域名加端口即可直接访问服务页面

image5ca8c286431b455d.png

image82907471077a8ace.png

至此 教程结束 感谢观看。

Loading Comments...