免费SSL申请并使用Yarp实现支持内网穿透

FastGateway 全新升级指南

🚀 版本亮点

FastGateway 新版本进行了重大架构升级,不再依赖 SQLite 数据库,改为使用轻量级的配置文件管理,同时移除了请求日志记录功能,实现了更加轻量级、高性能的网关解决方案。

✨ 核心功能特性

  • 🌐 内网穿透 - 安全高效的内网服务外网访问
  • 🔄 动态路由代理 - 实时刷新路由配置,无需重启服务
  • 🛡️ 访问控制 - 支持黑白名单机制,精确控制访问权限
  • 🔒 SSL 证书管理 - 免费自动申请和续期 SSL 证书
  • 📁 文件代理 - 单文件静态资源代理服务
  • 💾 文件管理 - 内置服务器文件管理系统
  • ⚡ 流量控制 - 自定义限流策略,保障服务稳定性

📦 Docker 部署指南

环境准备

使用 Docker Compose 快速部署 FastGateway 服务。首先创建 docker-compose.yaml 配置文件:

yml 复制代码
version: '3.8'
services:
  fast-gateway:
    image: crpi-j9ha7sxwhatgtvj4.cn-shenzhen.personal.cr.aliyuncs.com/koala-ai/fast-gateway
    container_name: fast-gateway
    restart: always
    privileged: true
    environment:
      - TunnelToken:Aa123456.
      - PASSWORD:Aa123456.
    volumes:
      - ./data:/app/data
      - ./certs:/app/certs
      - /proc/diskstats:/proc/diskstats
      - /proc/meminfo:/proc/meminfo
      - /proc/stat:/proc/stat
    ports:
        - "8080:8080"
        - "80:80"
        - "443:443/udp"
        - "443:443/tcp"

🔧 配置说明

端口配置:

  • 80: HTTP 服务端口
  • 443: HTTPS 服务端口(TCP/UDP 双协议支持)
  • 8080: 管理控制台端口

环境变量:

  • TunnelToken: 内网穿透客户端连接令牌
  • PASSWORD: 管理控制台登录密码

启动服务后,访问 http://your-server:8080 进入管理控制台,使用配置的密码 Aa123456. 进行登录。

🎯 服务配置

登录成功后,进入服务管理页面,点击右上角的「新增服务」按钮:

配置服务监听 80 端口并启用 HTTPS 功能。当在 80 端口启用 HTTPS 时,系统会自动同时监听 443 端口,这是标准 Web 服务的推荐配置。完成配置后点击「保存」按钮。

保存后,点击服务管理菜单中的「启动服务」按钮。服务启动后将同时监听 80 和 443 端口。

SSL 证书配置(可选):

如果您拥有域名,可以通过「证书管理」功能申请免费 SSL 证书。

⚠️ 注意:申请 SSL 证书时必须确保服务正在监听 80 端口,以完成域名验证。

📥 客户端下载

服务启动完成后,即可下载内网穿透客户端进行配置:

🖥️ 内网穿透客户端配置

下载客户端

访问 FastGateway Releases 页面,根据操作系统选择对应的客户端版本。本教程以 Windows 版本为例。

客户端文件结构

下载并解压后,客户端文件包含以下内容:

🔧 配置文件设置

打开 tunnel.json 配置文件,进行客户端参数配置:

json 复制代码
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  // 客户端监听端口
  "Port": 1881,
  "Token": "Aa123456.",
   // 链接网关的协议,如果没有https则使用ws协议 
  "ServerUrl": "ws://127.0.0.1",
  "Name": "FastGateway1",
  // 支持h2,ws
  "Type": "ws",
  // 只有https的时候才需要使用h2,http不能使用h2  
  "ServerHttp2Support": false,
  // 服务端是否支持HTTP/2
  "ReconnectInterval": 5000,
  // 重连间隔,单位毫秒
  "HeartbeatInterval": 30000,
  // 心跳间隔,单位毫秒
  "Proxy": [
    {
      // 请求当前服务的host
      "Host": "www.cnblogs.com",
      // 网关路由匹配  
      "Route": "/",
      // 匹配的域名,注意如果设置了以后只有这个域名才会请求当前配置
      "Domains": [],
       // 当前本地服务请求的端点 
      "LocalRemote": "https://www.cnblogs.com/",
       // 当前服务名称用于在网关中查看 
      "Name": "Test Proxy",
      "Description": "This is a test proxy",
      // 启用当前代理服务
      "Enabled": true
    }
  ]
}

🔑 配置参数说明

连接参数:

  • Token: 必须与服务端 TunnelToken 保持一致
  • ServerUrl: 服务端 WebSocket 连接地址
  • Type: 支持 wsh2 协议(HTTPS 环境推荐 h2)

代理配置:

  • Host: 目标服务的主机地址
  • Route: URL 路径匹配规则
  • Domains: 域名限制(可选)
  • LocalRemote: 实际代理的本地服务地址

🚀 启动客户端

完成配置后,保存文件并打开命令行,执行以下命令启动客户端:

sh 复制代码
.\TunnelClient.exe -c .\tunnel.json

✅ 连接验证

客户端成功连接后会显示连接成功信息。此时可以在网关管理控制台的「节点管理」中查看连接状态:

在节点管理页面中,可以查看所有已注册的客户端节点信息、连接状态和代理规则。

🌐 功能测试

现在可以通过访问服务地址来测试路由代理是否正常工作:

🎉 测试结果

成功访问服务后,可以看到:

  1. 代理成功 - 目标网站(博客园)的内容被正确代理
  2. 请求日志 - 客户端控制台显示详细的请求处理日志
  3. 网关管理 - 可在网关控制台实时监控流量和连接状态

至此,FastGateway 全新版本的部署和配置已经完成,您可以开始使用这个轻量级、高性能的网关解决方案了。

技术探讨

qq群:737776595

wx:wk28u9123456789

项目开源地址:https://github.com/239573049/FastGateway