使用钉钉内网穿透工具暴露本地服务
本指南介绍如何使用钉钉提供的内网穿透工具,将本地开发的Web服务暴露到公网。
工具获取与准备
首先,您需要从GitHub克隆项目代码,并根据您的操作系统进行相应的准备工作。
git clone https://github.com/open-dingtalk/pierced.git
cd windows_64 # 根据您的操作系统选择相应的目录,例如 windows_64, linux_amd64 等
chmod +x ding # 赋予执行权限
HTTP服务穿透
要将本地运行的HTTP服务(例如运行在3000端口的应用)暴露到公网,可以使用以下命令:
# 基本启动命令,使用默认配置文件和指定的子域名及本地端口
./ding -config=ding.cfg -subdomain=my-app 3000
# 或者采用另一种参数写法
./ding -config=ding.cfg -subdomain=my-app 3000
前台运行与日志监控
为了方便调试,您可以选择前台运行,并将日志输出到标准输出,同时设置日志级别为INFO:
./ding -config=ding.cfg -log=stdout -log-level=INFO -proto=http -subdomain=my-app 3000
命令参数说明:
| 参数 | 说明 |
|---|---|
./ding |
指向穿透工具可执行文件的路径。 |
-config=ding.cfg |
指定配置文件(ding.cfg)的路径。 |
-log=stdout |
将日志输出到标准输出。 |
-log-level=INFO |
设置日志级别为 INFO,显示更详细的运行信息。 |
-proto=http |
指定穿透协议为 HTTP。 |
-subdomain=my-app |
申请一个名为 my-app 的二级域名用于公网访问。 |
3000 |
本地需要暴露的HTTP服务的端口号。 |
使用自定义域名
如果您想使用自己注册的域名(例如 my-domain.com)来访问服务,需要进行额外的DNS配置(将域名的CNAME记录指向穿透服务提供的地址)。请注意,使用自定义域名通常需要进行备案。
配置自定义域名的命令示例:
./ding -config=ding.cfg -proto=http -hostname=my-app.mydomain.com -subdomain=my-app 3000
参数说明:
| 参数 | 说明 |
|---|---|
-hostname=my-app.mydomain.com |
指定您希望使用的自定义域名。此域名必须已正确配置 CNAME 记录。 |
-subdomain=my-app |
(可选)即使使用自定义域名,也可以指定一个子域名,用于内部标识或作为备用。 |
3000 |
本地服务的端口号。 |
后台运行
为了让穿透服务在服务器上稳定运行,您可以将其置于后台,并将日志输出到文件:
nohup ./ding -config=ding.cfg -log=stdout -log-level=INFO -proto=http -hostname=my-app.mydomain.com -subdomain=my-app 3000 > app_tunnel.log 2>&1 &
命令解释:
| 参数 | 说明 |
|---|---|
nohup ... & |
使命令在后台持续运行,即使终端关闭也不会中断。 |
> app_tunnel.log 2>&1 |
将标准输出(stdout)和标准错误(stderr)都重定向到 app_tunnel.log 文件,实现日志持久化。 |
在钉钉后台运行的另一个示例,其中本地服务地址为 172.8.8.8:8080:
nohup ./ding -config=ding.cfg -log=stdout -log-level=INFO -proto=http -subdomain=my-server 172.8.8.8:8080 > server_log.out 2>&1 &
通用参数说明
以下是 ding 命令支持的一些常用参数:
-authtoken string: 用于身份验证的令牌,适用于某些高级功能或私有部署。-config string: 指定 ngrok 配置文件(如$HOME/.ngrok)的路径。-hostname string: 请求使用自定义域名(仅限 HTTP/HTTPS 协议),需要配合 DNS 记录。-httpauth string: 为公共隧道端点设置 HTTP 基本认证(格式如username:password)。-log string: 指定日志输出文件。'stdout'表示输出到标准输出,'none'表示不记录日志。-log-level string: 设置日志记录级别,可选值包括DEBUG,INFO,WARNING,ERROR。-proto string: 指定隧道协议,可选'http','https','tcp'。默认是'http + https'。-subdomain string: 请求一个自定义的二级域名(仅限 HTTP/HTTPS 协议)。