b1a1aaa2f4bb6125661020ebbadcde9d7a117479
xk-hy-forward-go
内网双通道转发:外网 xk-hy-transit-go 只访问本服务,由本机转发至浙江省政务云(59.202.52.129)。
架构
| 监听路径 | 转发目标 | 用途 |
|---|---|---|
POST /province/supervise/data |
SUPERVISE_TARGET_URL(28212) |
加密后的监管业务 JSON |
POST /mng/file/auth/upload |
FILE_TARGET_URL(28211) |
处方 PDF multipart 上传 |
GET /health |
本地 | 健康检查 |
转发规则:
- URL:由环境变量固定(Scheme/Host/Path),不使用客户端 URL。
- Body:原样透传。
- Header:仅白名单内的业务头透传到政务云;
User-Agent、Cookie、X-Forwarded-*、X-Forward-Token等不会带上游。 - 监管白名单含
requestBody、X-Ca-Signature等(与 transithy.BuildUpload一致)。
环境配置
cp .env.example .env
# 编辑 .env 后,建议在项目根目录启动(见下方「启动与 .env 加载」)
启动与 .env 加载
程序启动时会按以下顺序查找并加载 第一个存在的 .env 文件:
- 当前工作目录(
os.Getwd()) - 可执行文件所在目录
- 可执行文件上级目录
加载成功时控制台会输出:[forward] 已加载 /path/to/.env。若未找到任何 .env,会提示使用环境变量或代码默认值。
注意:
- 请使用
#作为注释(不要用;,godotenv 不会把;行当作注释)。 - 从 IDE / 服务方式启动时,请把 Working Directory 设为
xk-hy-forward-go项目根,或把.env放在 exe 同目录。 - 核对启动日志中的
supervise=、file=是否为你在.env里配置的 URL。
| 变量 | 默认 | 说明 |
|---|---|---|
LISTEN_ADDR |
:16001 |
监听地址(建议绑内网 IP) |
SUPERVISE_TARGET_URL |
政务云 28212 | 监管业务上报 |
FILE_TARGET_URL |
政务云 28211 | 处方 PDF 上传 |
TARGET_URL |
(兼容) | 未设 SUPERVISE_TARGET_URL 时生效 |
ALLOW_IPS |
空 | 逗号分隔来源 IP;生产建议填 transit 出口 IP |
FORWARD_SHARED_SECRET |
空 | 非空时要求请求头 X-Forward-Token 一致(与 transit .env 同值) |
LOG_DIR |
空 | 日志根目录;默认 {程序目录}/../log/forward/ |
运行
cd xk-hy-forward-go
go run main.go
go test ./...
main.go 仅作入口,业务逻辑在 internal/forward 包;go run main.go 会编译入口及其依赖,启动全部路由(/health、监管、文件上传)。等价方式:go run .、go build -o forward.exe .。
Windows 也可双击或执行项目根目录下的 run.bat(内部为 go run main.go)。
IDE 调试:Working Directory 设为项目根,运行文件选 main.go 即可。
本地联调 mock 上游时,在 .env 中设置:
SUPERVISE_TARGET_URL=http://127.0.0.1:18001/api/
FILE_TARGET_URL=http://127.0.0.1:18001/api/u
未配置 SUPERVISE_TARGET_URL / FILE_TARGET_URL 时,代码默认指向政务云 59.202.52.129(与 .env.example 一致)。
应用日志
每条转发写入 app-YYYY-MM-DD.log(同时输出控制台),格式:
2026-05-19T22:00:01+08:00 | 192.168.1.20 | supervise | http=200 | 120ms | https://59.202.52.129:28212/...
不记录完整 body 与 uploadToken。
Description
Languages
Go
76%
JavaScript
12.2%
CSS
6.8%
HTML
5%