[ SKILL_DOCUMENTATION ]
# 配置
Cloudflare Workers 中 TCP 套接字的设置与配置。
## Wrangler 配置
### 基础设置
TCP 套接字在 Workers 运行时中默认可用。在 `wrangler.jsonc` 中无需特殊配置:
c
{
"name": "private-network-worker",
"main": "src/index.ts",
"compatibility_date": "2025-01-01"
}
### 环境变量
将连接详情存储为环境变量:
c
{
"vars": { "DB_HOST": "10.0.1.50", "DB_PORT": "5432" }
}
typescript
interface Env { DB_HOST: string; DB_PORT: string; }
export default {
async fetch(req: Request, env: Env): Promise {
const socket = connect({ hostname: env.DB_HOST, port: parseInt(env.DB_PORT) });
}
};
### 环境特定配置
c
{
"vars": { "DB_HOST": "localhost" },
"env": {
"staging": { "vars": { "DB_HOST": "staging-db.internal.net" } },
"production": { "vars": { "DB_HOST": "prod-db.internal.net" } }
}
}
部署命令:`wrangler deploy --env staging` 或 `wrangler deploy --env production`
## 与 Cloudflare Tunnel 集成
要将 Workers 连接到私有网络,请结合使用 TCP 套接字与 Cloudflare Tunnel:
Worker (TCP 套接字) → Tunnel 主机名 → cloudflared → 私有网络
### 快速设置
1. **安装 cloudflared** 到私有网络内的服务器上
2. **创建隧道**:`cloudflared tunnel create my-private-network`
3. **配置路由** 在 `config.yml` 中:
yaml
tunnel:
credentials-file: /path/to/.json
ingress:
- hostname: db.internal.example.com
service: tcp://10.0.1.50:5432
- service: http_status:404 # 必需的兜底规则
4. **运行隧道**:`cloudflared tunnel run my-private-network`
5. **从 Worker 连接**:
typescript
const socket = connect(
{ hostname: "db.internal.example.com", port: 5432 }, // Tunnel 主机名
{ secureTransport: "on" }
);
有关详细的 Tunnel 设置,请参阅 [Tunnel 配置参考](../tunnel/configuration.md)。
## 智能放置 (Smart Placement) 集成
通过将 Workers 自动放置在后端附近来减少延迟:
c
{ "placement": { "mode": "smart" } }
Workers 在观察到连接延迟后,会自动重新定位到更靠近 TCP 套接字目标的位置。请参阅 [智能放置参考](../smart-placement/)。
## 密钥管理
将敏感凭据存储为密钥(不要放在 wrangler.jsonc 中):
bash
wrangler secret put DB_PASSWORD # 提示时输入值
在 Worker 中通过 `env.DB_PASSWORD` 访问。使用 i