搜索全站
安装部署 9 分钟阅读

外贸站放国内还是海外服务器:速度、合规与访问稳定性的取舍

服务器放错位置,后面所有优化都是白做。本文用可测量的指标对比国内与海外机房,讲清备案、延迟、稳定性三项取舍与折中方案。

U
UFO_PF 2022-07-19 · 阅读 9 分钟
外贸 安装部署
阅读提示
本文约 3,310 字,预计阅读 9 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:选址是一个”不可逆”的决定

服务器位置是外贸站少数几个”做错了要推倒重来”的决定之一。页面改版可以慢慢调,主机迁一次要停服、改 DNS、重新配证书,还面临几小时的解析生效期。更麻烦的是,很多人是在站点做完后才发现”客户打不开”,这时再迁移,之前做的所有内容都得跟着搬。所以选址必须在建站第一天定下来,而且要基于测量数据,不是凭感觉。

原理分析:三个指标的真实权重

延迟(RTT):物理距离决定下限。中国到美国西海岸单向约 150–200ms,到欧洲约 200–280ms,到新加坡约 40–70ms。TCP 握手 + TLS 握手 + 首个请求,意味着客户在美西访问一个国内机房的站点,光握手就要 600ms 以上,还没开始传内容。

TTFB(首字节时间):比 ping 更能反映真实体验,因为它包含了服务器处理时间。用 curl 可以精确测量分项耗时。

合规与稳定性:国内机房需要 ICP 备案,未备案域名无法解析到国内 IP;海外机房免备案,但要注意目标市场的法律要求(如欧盟的 GDPR)。

方案 海外客户速度 国内维护便利性 备案 适用
国内机房 慢,TTFB 常 > 1s 好 必须 客户在国内
海外机房 快,TTFB 常 < 300ms 一般 免备案 客户在海外
海外机房 + CDN 最快 一般 免备案 客户分布广
香港 / 新加坡 折中 好 免备案 兼顾国内外

保姆级实操

步骤 1:先测,再决定。 用 curl 的分项计时,从目标市场的机器发起测试。没有海外机器可以用免费的在线测速服务,或者用云厂商按小时租一台。

# 分项测量:DNS 解析 / TCP 连接 / TLS 握手 / 首字节 / 总耗时
curl -o /dev/null -s -w \
"dns=%{time_namelookup} tcp=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} total=%{time_total}\n" \
https://example.com/

# 从多个地区连续测 5 次,看波动
for i in 1 2 3 4 5; do
  curl -o /dev/null -s -w "ttfb=%{time_starttransfer}\n" https://example.com/
done

步骤 2:确定客户地理分布。 从 Google Analytics 或已有的询盘记录里统计客户国家。如果 70% 以上客户在欧美,机房选美西或法兰克福;如果东南亚客户多,选新加坡。

步骤 3:选机房类型。 共享虚拟主机不推荐(外贸站面临海外爬虫与偶发攻击,隔离性差)。起步选 2 核 4G 的云服务器,系统用 Ubuntu 22.04 + Nginx + PHP 8.2 + MariaDB。

步骤 4:给服务器做基础优化。 开启 HTTP/2 与 Brotli,静态资源设置长缓存,这三件事对海外访问的提升最明显。

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    brotli on;
    brotli_comp_level 5;
    brotli_types text/css application/javascript image/svg+xml application/json;
    gzip on;
    gzip_types text/css application/javascript image/svg+xml;

    location ~* \.(css|js|woff2|jpg|png|webp)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
}

步骤 5:接 CDN。 Cloudflare 免费版对海外外贸站性价比很高:全球节点、免费 SSL、基础 WAF。注意 WordPress 后台与登录页要设置为不缓存,避免后台操作异常。

步骤 6:确认真实 IP 透传。 上了 CDN 后不处理,日志里全是 CDN 节点 IP,评论反垃圾与限流会失效。

// 在 wp-config.php 之前加载的逻辑,用于还原 CDN 后的真实 IP
if ( isset( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ) {
    $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
# 或者在 Nginx 层用 realip 模块处理
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
real_ip_header CF-Connecting-IP;

步骤 7:做迁移演练。 如果后续要换机房,先在测试域名上完整演练一次,确认 wp search-replace 能处理序列化数据。

# 换域名/换机房时的标准操作,注意 --all-tables 处理序列化字段
wp search-replace 'https://old.com' 'https://new.com' --all-tables --dry-run
wp search-replace 'https://old.com' 'https://new.com' --all-tables
wp rewrite flush --hard
wp cache flush

步骤 8:监控可用性。 用外部监控每 5 分钟探活,一旦连续 3 次失败就告警。外贸站跨越时区,你睡觉的时候正是客户的白天。

常见踩坑

  1. 只看 ping 不看 TTFB。 ping 值好看但页面慢,多半是后端 PHP 慢,TTFB 才反映真实情况。
  2. 国内机房 + 海外客户。 客户首屏 5 秒,跳出率超过 70%。
  3. 上了 CDN 但没设后台规则。 后台操作被缓存,出现”改了不生效”的诡异现象。
  4. 案例: 某外贸站把服务器放在国内并做了备案,理由是”国内访问后台快、维护方便”。上线后欧洲客户平均首屏 6.2 秒,Google Ads 投放花了几千元只换来 3 条询盘。迁移到法兰克福机房后同样预算拿到 40 多条询盘。教训:站点速度要按客户所在地衡量,不是按你的所在地。
  5. 真实 IP 未透传。 反垃圾插件把 CDN 节点 IP 判为攻击者,误伤正常客户。
  6. DNS TTL 设置过长。 迁移时 TTL 设成 86400,切换后部分地区 24 小时还在访问旧服务器。
  7. 忽略目标市场合规。 面向欧盟客户没做 GDPR 合规,可能面临投诉。

总结

选址的判断顺序:先统计客户地理分布 → 用 curl 实测候选机房的 TTFB → 选延迟最低的机房 → 接 CDN 兜住全球分散客户 → 处理真实 IP 透传。折中方案是香港或新加坡机房,兼顾国内外访问。判断标准:目标市场实测 TTFB 低于 500ms、首屏 3 秒内。外贸站整体上线顺序见外贸独立站完整流程;域名与邮箱配置见域名选择与企业邮箱。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。