开始输入,可搜索发票、服务、域名、工单,以及 更多...
想为中国大陆用户部署移动 App 或 SaaS API 后端、又不想办理 ICP 备案,最务实的做法是:把后端放在走中国电信 CN2 GIA(AS4809)线路的香港服务器上,用 Nginx 作为 API 网关,静态资源交给 CDN。IMIDC 正好提供这套方案:香港 CN2 GIA VPS 每月 $18 起,香港独立服务器每月 $139 起,并提供 DDoS 防护和 7×24 多语言技术支持。
API 后端会把网络延迟成倍放大,因为 App 的一个页面通常要串行发起好几次请求。
以登录页为例:刷新 token、拉取用户资料、读取功能开关、加载首页信息流,往往是一个接一个地请求。单次往返 40 ms 时页面几乎秒开;如果晚高峰普通国际线路拥塞,往返涨到 250 ms 并伴随 3% 丢包,同一个页面就要一秒以上,部分请求还会超时。再叠加移动网络自身的抖动,线路质量对 API 的影响往往比服务器配置更大。
动态 API 放在香港 CN2 GIA 服务器上,所有可缓存内容交给 CDN。
| 层级 | 常用软件 | 部署位置 | 要点 |
|---|---|---|---|
| API 网关 / TLS | Nginx、OpenResty、Kong、Traefik | 香港 CN2 GIA 服务器 | HTTP/2 + HTTP/3、限流、到上游的长连接 |
| 应用服务器 | Node.js、Go、Java/Spring、Python、PHP | 同机或内网 | 无状态,便于横向扩展 |
| 缓存 / 会话 / 队列 | Redis | 内网,绝不暴露公网 | 热点数据、限流计数、任务队列 |
| 数据库 | MySQL、PostgreSQL | SSD/NVMe 独立服务器 | 每日异地备份,业务增长后加从库 |
| 静态文件、图片、安装包 | 对象存储 + CDN | 源站前加 IMIDC CDN | 长缓存头、文件名带哈希 |
| 推送、短信、地图 | 面向大陆服务的厂商 | 由后端调用 | 选择在大陆可用的服务商 |
需要特别注意:OpenAI、Anthropic Claude 和 Google Gemini 的 API 官方不支持香港和中国大陆地区。不要把香港后端设计成调用这些接口;如果产品需要为大陆用户提供 AI 功能,请选用获准在该市场提供服务的模型厂商。
CN2 GIA 是中国电信的高端国际网络,对 API 而言,它的价值在于高峰期的稳定,而不是某个峰值速度数字。
| 到大陆用户的线路 | 非高峰 | 晚高峰 | 是否适合 API 后端 |
|---|---|---|---|
| 香港 CN2 GIA(AS4809) | 路径短而直接 | 按稳定设计,通常丢包低 | 面向大陆的 API 首选 |
| 香港普通国际线路 | 多数时候正常 | 拥塞、丢包较常见 | 请求频繁的 API 风险大 |
| 洛杉矶 CN2 / 联通 9929 | 距离远,RTT 较高 | 优质线路下较稳定 | 适合同时有大陆用户的全球化 App |
| 日本 VPS(CN2 优化线路) | RTT 中等 | 优化线路较稳定 | 适合日本 + 中国双市场 |
任何服务商都无法向每个用户承诺固定延迟,因为最后一公里(家庭宽带、4G/5G)不在机房掌控范围内。上线前请务必按下文方法从真实运营商网络测试。
在网关统一卸载 TLS,与应用服务器保持长连接,上游故障时快速失败。
upstream api_backend {
server 10.0.0.11:8080 max_fails=3 fail_timeout=10s;
server 10.0.0.12:8080 max_fails=3 fail_timeout=10s;
keepalive 64;
}
limit_req_zone $binary_remote_addr zone=api:20m rate=20r/s;
server {
listen 443 ssl;
listen 443 quic reuseport; # HTTP/3 (nginx 1.25+ built with QUIC)
http2 on;
server_name api.example.com;
ssl_certificate /etc/nginx/ssl/api.example.com.crt;
ssl_certificate_key /etc/nginx/ssl/api.example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 1d;
add_header Alt-Svc 'h3=":443"; ma=86400' always;
gzip on;
gzip_types application/json;
client_max_body_size 20m;
keepalive_timeout 75s;
location /v1/ {
limit_req zone=api burst=40 nodelay;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 3s;
proxy_read_timeout 15s;
proxy_next_upstream error timeout http_502 http_503;
proxy_next_upstream_tries 2;
proxy_pass http://api_backend;
}
}
放行 UDP 443 以支持 QUIC,并确认 HTTP/3 已生效:
# open TCP 443 and UDP 443 (QUIC / HTTP/3)
ufw allow 443/tcp
ufw allow 443/udp
nginx -t && systemctl reload nginx
curl -sI --http3 https://api.example.com/v1/health | head -1
non_idempotent(通常不建议),Nginx 不会重放 POST。proxy_read_timeout 略大于最慢的正常接口即可,耗时任务改为队列异步处理。客户端应使用较短的单次超时、带随机抖动的指数退避,并为写操作加幂等键。
async function callApi(url, opts = {}, attempts = 3) {
for (let i = 0; i < attempts; i++) {
const ctrl = new AbortController();
const timer = setTimeout(() => ctrl.abort(), 8000); // per-attempt timeout
try {
const r = await fetch(url, { ...opts, signal: ctrl.signal });
if (r.status < 500 && r.status !== 429) return r; // do not retry 4xx
} catch (e) { /* network error or timeout */ }
finally { clearTimeout(timer); }
const delay = Math.min(4000, 300 * 2 ** i) * (0.5 + Math.random()); // backoff + jitter
await new Promise(res => setTimeout(res, delay));
}
throw new Error('API unavailable');
}
// for POST/PUT send a header such as Idempotency-Key: <uuid> so retries are safe
Retry-After 响应头。确定线路前,一定要在晚高峰从三大运营商网络分别测量。
# per-phase timing of one API call (run from a probe or a test phone with Termux)
curl -o /dev/null -s -w 'dns=%{time_namelookup} tcp=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} total=%{time_total}\n' \
https://api.example.com/v1/health
# route and loss, with AS numbers - look for AS4809 on the China Telecom path
mtr -rwzc 100 203.0.113.10
公开 API 既会遭遇流量型攻击,也会被应用层滥用,两层都要防。
limit_req),鉴权采用短有效期的签名令牌(如 JWT)。先用 VPS 起步,流量增长后再把各角色拆分到独立服务器。
| 阶段 | 典型部署 | IMIDC 产品 |
|---|---|---|
| MVP / 内测 | Nginx + 应用 + Redis + 数据库单机部署 | 香港 CN2 GIA VPS($18/月起) |
| 成长期 | 网关和应用在 VPS,数据库上独立服务器 | VPS + 香港独立服务器($139/月起) |
| 规模化生产 | 2 台以上网关、应用集群、数据库主从、CDN | 多台香港独立服务器 + IMIDC CDN |
| 区域扩展 | 为海外用户增加东京、新加坡或洛杉矶节点 | 日本 / 美国独立服务器,BGP Anycast |
IMIDC 提供免费服务器迁移,把数据库从 VPS 迁到独立服务器时可以省下不少工作量。
根据业务阶段和用户分布选择产品:
IMIDC 提供基于中国电信 CN2 GIA(AS4809)线路的香港 VPS 和独立服务器。服务器位于香港,托管无需 ICP 备案,但 App 及其内容仍须遵守相关法律法规。
ICP 备案针对的是在中国大陆境内托管的服务,香港 API 服务器本身不需要。若通过大陆应用商店分发 App,可能涉及单独的 App 备案要求,请向应用商店或专业人士确认,本文不构成法律意见。
不能。这些 API 官方不支持香港和中国大陆地区,不应从香港服务器调用。如需为大陆用户提供 AI 功能,请选用获准在该市场提供服务的模型厂商。
MVP 或日活几千、查询较轻的应用,用每月 $18 起的香港 CN2 GIA VPS 就够了。当磁盘 I/O 或内存成为瓶颈时,再把数据库迁到每月 $139 起的香港独立服务器。
在有丢包或频繁切换网络的移动场景下通常有帮助。部分网络会限制 UDP,所以始终保留基于 TCP 的 HTTP/2 作为回落,浏览器和主流 HTTP 客户端会自动处理。
准备把 API 部署到离大陆用户更近的地方?对比 香港 CN2 GIA VPS 与 香港独立服务器,或提交工单,向 IMIDC 团队咨询线路和架构建议。