Start typing to search across invoices, services, domains, tickets, and more...
中国本土ユーザー向けのモバイルアプリや SaaS の API バックエンドを ICP 届出なしで運用するなら、中国電信 CN2 GIA(AS4809)回線の香港サーバーにホスティングし、Nginx を API ゲートウェイとして前段に置き、静的ファイルは CDN に任せる構成が最も現実的です。IMIDC はまさにこの構成向けに、香港 CN2 GIA VPS を月額 $18 から、香港専用サーバーを月額 $139 から提供しており、DDoS 対策と 24 時間 365 日の多言語サポートも利用できます。
アプリの 1 画面は複数のリクエストを順番に発行するため、API バックエンドではネットワーク遅延が何倍にも効いてきます。
たとえばログイン画面では、トークン更新、プロフィール取得、機能フラグ、フィード取得が順に呼ばれます。1 往復 40 ms なら一瞬で表示されますが、夜間に一般国際回線が混雑して 250 ms・パケットロス 3% になると、同じ画面に 1 秒以上かかり、一部はタイムアウトします。さらにモバイル回線のジッターも加わるため、API ではサーバースペック以上に本土 3 キャリアまでの経路品質が重要です。
動的な API は香港の CN2 GIA サーバーに置き、キャッシュできるものはすべて CDN に逃がします。
| レイヤー | 代表的なソフトウェア | 配置場所 | ポイント |
|---|---|---|---|
| API ゲートウェイ / TLS | Nginx、OpenResty、Kong、Traefik | 香港 CN2 GIA サーバー | HTTP/2 + HTTP/3、レート制限、上流への keepalive |
| アプリサーバー | Node.js、Go、Java/Spring、Python、PHP | 同一サーバーまたはプライベートネットワーク | ステートレスにして水平スケール |
| キャッシュ / セッション / キュー | Redis | プライベートネットワークのみ | ホットデータ、レート制限カウンター、ジョブキュー |
| データベース | MySQL、PostgreSQL | SSD/NVMe 搭載の専用サーバー | 毎日オフサイトバックアップ、成長したらレプリカ |
| 静的ファイル・画像・アプリ更新 | オブジェクトストレージ + CDN | オリジンの前段に IMIDC CDN | 長期キャッシュヘッダー、ハッシュ付きファイル名 |
| プッシュ・SMS・地図 | 中国本土で使えるベンダー | バックエンドから呼び出し | 本土ユーザーに届くサービスを選定 |
重要な制約として、OpenAI、Anthropic Claude、Google Gemini の API は香港と中国本土では公式に提供されていません。香港のバックエンドからこれらを呼び出す前提で設計せず、本土ユーザー向けに AI 機能が必要な場合は、その市場でのサービス提供が認められたモデル事業者を利用してください。
CN2 GIA は中国電信のプレミアム国際網で、API にとっての価値は最高速度よりもピーク時の安定性にあります。
| 本土ユーザーへの経路 | オフピーク | 夜間ピーク | API バックエンドへの適性 |
|---|---|---|---|
| 香港 CN2 GIA(AS4809) | 短く直接的な経路 | 安定性重視の設計、低ロスが一般的 | 中国向け API に最適 |
| 香港の一般国際トランジット | 多くの場合問題なし | 混雑・ロスが起きやすい | リクエストの多い API にはリスク |
| ロサンゼルス CN2 / 聯通 9929 | 距離のため RTT は高め | プレミアム回線で安定 | 中国ユーザーも抱えるグローバルアプリ向け |
| 日本 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;
}
}
QUIC 用に UDP 443 を開放し、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 を付けない限り 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 ヘッダーに従う。回線を決める前に、本土 3 キャリアすべてから夜間ピーク時に計測してください。
# 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 + DB を 1 台に | 香港 CN2 GIA VPS(月額 $18 から) |
| 成長期 | ゲートウェイとアプリは VPS、DB は専用サーバー | VPS + 香港専用サーバー(月額 $139 から) |
| 本番・大規模 | ゲートウェイ 2 台以上、アプリプール、DB プライマリ + レプリカ、CDN | 複数の香港専用サーバー + IMIDC CDN |
| 地域展開 | 中国以外のユーザー向けに東京・シンガポール・ロサンゼルスを追加 | 日本 / 米国の専用サーバー、BGP による Anycast |
IMIDC は無料のサーバー移行を提供しているため、データベースを VPS から専用サーバーへ移す際の負担を減らせます。
開発段階とユーザー分布に合わせて製品を選びます。
IMIDC が中国電信 CN2 GIA(AS4809)回線の香港 VPS と専用サーバーを提供しています。サーバーは香港にあるためホスティングに ICP 届出は不要ですが、アプリとコンテンツは適用される法律を守る必要があります。
ICP 届出は中国本土内でのホスティングが対象なので、香港の API サーバー自体には不要です。ただし本土のアプリストアで配信する場合は別途アプリの届出が求められることがあるため、配信先や専門家に確認してください(法的助言ではありません)。
いいえ。これらの API は香港と中国本土では公式に提供されていないため、香港のサーバーから呼び出すべきではありません。本土ユーザー向けの AI 機能には、その市場での提供が認められたモデル事業者を使ってください。
MVP や、軽いクエリで 1 日数千ユーザー程度なら月額 $18 からの香港 CN2 GIA VPS で十分です。ディスク I/O やメモリがボトルネックになったら、月額 $139 からの香港専用サーバーに DB を移しましょう。
ロスやネットワーク切り替えが多いモバイル環境では効果が出ることが多いです。UDP を制限するネットワークもあるため、TCP 上の HTTP/2 をフォールバックとして必ず残してください(ブラウザや主要 HTTP クライアントは自動で切り替えます)。
本土ユーザーの近くに API を置く準備はできましたか?香港 CN2 GIA VPS と香港専用サーバーを比較するか、チケットを送信して IMIDC チームに経路や構成について相談してください。