侧边栏壁纸
博主头像
龍騰博客 博主等级

行动起来,活在当下

  • 累计撰写 101 篇文章
  • 累计创建 28 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

内网穿透之Cloudflare Tunnel 和 Nginx Proxy Manager 配合实现免端口通配域名访问

管理员
2025-05-19 / 1 评论 / 0 点赞 / 6 阅读 / 0 字

前期准备

目前探索到的一种方式是,需要使用命令行进行登录,并创建隧道等方式。因为暂时没有找到其他的方式,所以只能先按这种进行操作。

1. 登录授权

docker run --rm -u root -v /home/docker/cloudflared:/root/.cloudflared cloudflare/cloudflared tunnel login

输入命令后提示打开如下 url,浏览器打开登录即可。登录后会进入如下界面,随便点击一个域名进行授权。点击授权即可。授权以后,证书就下载完成了。到这里,第一步就完成了。

2. 创建隧道

本地配置管理的隧道和界面管理不通用,所以需要使用命令进行创建隧道,而不能使用管理界面创建的隧道。

docker run --rm -u root -v /home/docker/cloudflared:/root/.cloudflared cloudflare/cloudflared tunnel create test

test 为创建的隧道名称,这里随意即可。执行命令后会在本地生成一个以隧道 id 命名的 json 文件。

3. 创建配置文件

在 /home/docker/cloudflared 目录下创建 config.yaml 文件,部分内容需要替换为自己的配置。

tunnel: <tunnel-id>
credentials-file: /root/.cloudflared/<tunnel-id>.json
protocol: http2protocol: http2
ingress:ingress:
  - hostname: "*.domain.xyz"  - hostname: "*.domain.xyz"
    service: http://localhost:80    service: http://localhost:80
  - service: http_status:404  - service: http_status:404credentials-file: /root/.cloudflared/<tunnel-id>.json
protocol: http2protocol: http2
ingress:ingress:
  - hostname: "*.domain.xyz"  - hostname: "*.domain.xyz"
    service: http://localhost:80    service: http://localhost:80
  - service: http_status:404  - service: http_status:404

替换为上一步创建的隧道的 id号,注意是一串数字字母组成的那个,不是隧道名,符号〈 〉要去掉

*.domain.xyz 替换为自己的域名,注意通配符需要加上,引号“ ”要保留

这里将所有的流量都转发到 80 端口。

4. 创建路由

运行命令之前需要保证之前没有创建过通配符的 dns 记录。

docker run --rm -u root -v /home/docker/cloudflared:/root/.cloudflared cloudflare/cloudflared tunnel route dns test "*.domain.xyz"

test 替换为自己的隧道名

*.domain.xyz 替换为自己的域名,注意通配符需要加上

运行命令不报错,并且 dns 记录新增了一条通配符的记录就可以了。

运行

这里使用 docker-compose 运行了,如果想直接 docker run,使用 gpt 转换一下即可。

version: '3'
services:
  npm:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: npm-tunnel
    restart: unless-stopped
   
    ports:
      - '80:80'
      - '81:81'
      - '443:443'    
    volumes:
      - /home/docker/npm/data:/data
      - /home/docker/npm/letsencrypt:/etc/letsencrypt

  tunnel:
    container_name: tunnel
    image: cloudflare/cloudflared
    user: root
    volumes:
      - /home/docker/cloudflared:/root/.cloudflared
    restart: always
    network_mode: host
    command: tunnel run test

需要注意的是,command 这里需要替换为自己的隧道名。

注意要避免80端口冲突

npm 的安装似乎需要一段时间,安装好以后打开 81 端口。

邮箱和密码:

Email: [email protected]

Password: changeme

登陆后会强制修改邮箱和密码。

然后点击 Proxy Hosts 进行新增反向代理。

新增一条反向代理配置到 npm 的管理界面试试。

测试可以通过配置的域名进行访问 npm。

方便的是,以后如果部署了其他的程序,只需要在 npm 管理界面添加反向代理即可。

优点:1、支持通配域名,2、免端口

缺点:有点慢

0
  • 1

评论区