上线优惠价:每个套餐的价格都比我们追踪的最便宜的离岸竞争对手低 30%。 查看价格对比所有套餐价格均比最便宜的离岸主机服务商低 30%

指南

离岸 WordPress 主机:在 VPS 上搭建 WordPress

我们不销售托管式 WordPress 主机。本文介绍如何在离岸 VPS 上自行运行 WordPress:套餐、地区、域名、经过测试的 Nginx、PHP 与 MariaDB 配置、HTTPS、缓存、安全以及邮件。

阅读约 12 分钟OffshoreServ 团队撰写

要点

  • 我们不出售共享或托管式 WordPress 主机:您需要在离岸 VPS 上自行运行 WordPress,每月 $2.39 起。
  • 在离岸地区,美国 DMCA 通知不予执行,但当地法院,以及欧盟地区依据《数字服务法》发出的通知,仍可要求采取行动。
  • 域名受其注册商和注册局所在地法律的约束:.com 和 .net 的注册局在美国运营。
  • 借助 Nginx、PHP-FPM、MariaDB、WP-CLI 和 Certbot,20 到 30 分钟即可让一个安全的 WordPress 网站上线。
  • 添加缓存、自动更新、快照和服务器外备份,并通过 587 端口的 SMTP 中继发送邮件。
本页内容
  1. 离岸 WordPress 主机是什么意思
  2. 为离岸 WordPress 主机选择套餐和地区
  3. 让域名和服务器一样安全
  4. 安装 Nginx、PHP 和 MariaDB
  5. 用 WP-CLI 安装 WordPress
  6. 配置 Nginx 和 HTTPS
  7. 让 WordPress 更快
  8. WordPress 的安全与备份
  9. 从 WordPress 发送邮件
  10. 在离岸网站前加 CDN:会带来哪些变化
  11. 常见问题

离岸 WordPress 主机是指把您的 WordPress 网站运行在另一个国家的服务器上,受该国法律管辖。我们不销售共享主机或托管型 WordPress 主机。您可以在拥有完整 root 权限的离岸 VPS 上自行安装 WordPress,月付 $2.39 起;按照本指南操作,只需 20 到 30 分钟。

以下步骤适用于 Debian 12 和 Ubuntu 24.04 LTS,使用 Nginx、PHP-FPM、MariaDB、WP-CLI 以及免费的 Let's Encrypt 证书。

离岸 WordPress 主机是什么意思

您的网站运行在一台 VPS 上,所在国家由您根据当地法律来挑选:在我们这里,可选冰岛、瑞士、摩尔多瓦、罗马尼亚、荷兰、保加利亚或马来西亚。有三件事会发生变化:

  • 美国 DMCA 通知不予执行。DMCA 在这些国家没有法律效力:通知会被记录并得到答复,服务器不受任何影响。这才是“无视 DMCA 的 WordPress 主机”的准确含义。
  • 由当地法律决定。服务器所在国的有效法院命令可以要求我们采取行动。除非法院禁止,我们会先通知您,让您有机会回应。
  • 欧盟地区适用欧盟规则。在罗马尼亚、荷兰和保加利亚,符合欧盟《数字服务法》“通知与行动”要求的通知同样可以要求我们采取行动。

不变的是:违法内容依然违法,您本国的法律依然适用于您;垃圾邮件、网络钓鱼、恶意软件、攻击、欺诈和儿童性虐待材料会导致立即处理。我们的无视 DMCA 主机页面列出了投诉处理流程,无视 DMCA 主机详解一文则介绍了还有哪些途径可能影响网站。

为离岸 WordPress 主机选择套餐和地区

内存是 WordPress 服务器最先遇到的瓶颈,而网店需要的内存最多:WooCommerce 的购物车、结账和账户页面包含每位顾客自己的数据,因此页面缓存必须跳过这些页面,由 PHP 为每位访客单独生成。

网站套餐vCPU、内存、NVMe每月
测试站点或小型个人博客Dinghy1 个 vCPU、1 GB、25 GB$2.39
博客或企业网站Sloop1 个 vCPU、2 GB、40 GB$3.49
高流量博客或多个网站Cutter2 个 vCPU、4 GB、70 GB$5.49
WooCommerce 网店Schooner4 个 vCPU、8 GB、160 GB$12.49
高流量或多个网店Brigantine6 个 vCPU、16 GB、240 GB$19.99

根据我们网络页面上的延迟估算,选择离大多数读者最近的地区,然后在地区页面查看当地法律。新 VPS 的首个付费周期享有 72 小时退款保证,如无待处理的滥用投诉,款项将退回您的余额。如果网站超出了套餐的承载能力,可在“服务器操作”中申请升级到更大的套餐。

让域名和服务器一样安全

主机服务商掌控的是服务器,而不是域名。注册商是您注册域名时所通过的公司;注册局运营机构维护顶级域名的主数据库并运行其域名服务器。无论您的服务器在哪里,两者都受其本国法律和合同约束。

ICANN 的域名查封指南介绍了法院如何下令让注册局或注册商锁定域名、停止解析或将其转移。根据 IANA 的记录,.com 和 .net 注册局由位于弗吉尼亚州雷斯顿的 VeriSign Global Registry Services 运营。因此,无论网站运行在哪里,美国法院的命令都可以让 .com 或 .net 域名下线:服务器照常运行,但访客无法再通过该域名访问。选择注册商和域名时,要像选择主机服务商一样谨慎:

  • 注册商:它所在的国家、它关于投诉和法院命令的条款,以及它要求提供的身份信息。
  • 顶级域名:根区数据库会显示由谁运营、在哪里运营。
  • WHOIS 隐私保护:隐私服务会把您的联系信息从 WHOIS 中隐去,而代理服务则会代替您成为登记持有人。无论哪种方式,服务商仍然掌握您的信息,并受其本国法律约束。

安装 Nginx、PHP 和 MariaDB

在 VPS 上搭建 WordPress,要从 Web 服务器、PHP 和数据库开始。订购安装 Debian 12 或 Ubuntu 24.04 LTS 的 VPS,按照快速入门登录,并完成加固清单中的各项。然后以 root 身份(sudo -i)执行以下所有命令,把 example.com 换成您的域名:

apt update
apt install -y nginx mariadb-server php-fpm php-mysql php-curl php-gd php-imagick php-intl php-mbstring php-xml php-zip curl gnupg sudo

之后,WordPress 的“站点健康”页面会显示所有必需和推荐的 PHP 模块均已安装。Debian 12 使用 PHP 8.2,Ubuntu 24.04 使用 PHP 8.3,两者都搭配 MariaDB 10.11。WordPress 推荐使用 PHP 8.3 或更高版本,“站点健康”会把 8.2 标记为应当更新的旧版本,因此新网站请选择 Ubuntu 24.04。PHP 默认只接受 2 MB 的上传,每个请求 128 MB 内存;WordPress 主机手册推荐 256 MB:

PHPV=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')
cat > /etc/php/$PHPV/fpm/conf.d/90-wordpress.ini <<'EOF'
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
EOF
systemctl restart php$PHPV-fpm

PHPV 的值为 8.2 或 8.3,后续步骤会继续使用它。现在创建数据库以及仅能访问该数据库的用户,并设置随机密码:

DB_PASS=$(openssl rand -hex 24)
mariadb -e "CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"
mariadb -e "CREATE USER wordpress@localhost IDENTIFIED BY '$DB_PASS'"
mariadb -e "GRANT ALL PRIVILEGES ON wordpress.* TO wordpress@localhost"

请留在这个 shell 中:下一步会把 $DB_PASS 写入 wp-config.php。您不需要运行 mariadb-secure-installation(或 mysql_secure_installation):在这两个系统上,MariaDB 的 root 账户只能通过本地套接字登录,没有匿名用户和测试数据库,服务器也只监听 127.0.0.1。

用 WP-CLI 安装 WordPress

WP-CLI 可以在命令行中管理 WordPress。按照 WP-CLI 手册的说明下载它并验证签名:

cd /tmp
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar.asc
curl -L https://raw.githubusercontent.com/wp-cli/builds/gh-pages/wp-cli.pgp | gpg --import
gpg --fingerprint 63AF7AA15067C05616FDDD88A3A2E8F226F0BC06
gpg --verify wp-cli.phar.asc wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
mv wp-cli.phar /usr/local/bin/wp

gpg --fingerprint 必须能找到密钥(WP-CLI 在其验证指南中公布了该密钥的指纹),gpg --verify 必须报告签名有效;提示密钥未经认证的警告属于正常现象。然后创建网站目录和 WP-CLI 的缓存目录,属主设为 PHP-FPM 的运行用户 www-data,并以该用户身份安装 WordPress:

install -d -o www-data -g www-data /var/www/example.com /var/www/.wp-cli
cd /var/www/example.com
sudo -u www-data wp core download
sudo -u www-data wp config create --dbname=wordpress --dbuser=wordpress --dbpass="$DB_PASS"
chmod 640 wp-config.php
sudo -u www-data wp core install --url=https://example.com --title="Example" --admin_user=YOUR_ADMIN_NAME --admin_email=ADMIN_EMAIL --skip-email

由于文件属于 www-data,WordPress 可以自行安装更新;.wp-cli 目录能让您免于看到缓存警告。保存数据库密码的 wp-config.php 对其他用户不可读。WP-CLI 会输出一个生成的管理员密码:请把它保存在密码管理器中。

配置 Nginx 和 HTTPS

将 example.com 和 www.example.com 的 A 记录指向服务器的 IPv4 地址,并为 IPv6 添加 AAAA 记录:Certbot 需要通过 80 端口用这两个域名访问到这台服务器。把 server 块写入 /etc/nginx/sites-available/example.com,在 Debian 12 上改用 php8.2-fpm.sock:

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php;
    client_max_body_size 64m;

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

    location ^~ /.well-known/ {
        try_files $uri =404;
    }

    location ~ /\. {
        deny all;
    }

    location ~* /wp-content/uploads/.*\.php$ {
        deny all;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }
}
try_files
把不是文件的路径交给 index.php 处理,以支持美观的固定链接。
拒绝规则
隐藏文件(如 .git)以及上传目录中的 PHP 文件会返回 403 错误;/.well-known/ 保持开放。
fastcgi-php.conf
对不存在的 PHP 文件返回 404。
client_max_body_size
Nginx 默认限制为 1 MB,超过的上传会被拒绝并返回 413 错误。

启用该站点以替代默认站点,然后切换到美观的固定链接:

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
rm /etc/nginx/sites-enabled/default
nginx -t
systemctl reload nginx
sudo -u www-data wp --path=/var/www/example.com rewrite structure '/%postname%/'

如果您按照加固指南启用了 ufw,还需要运行 ufw allow 80/tcp。按照 EFF 的说明以 snap 方式安装 Certbot。Ubuntu 24.04 自带 snapd;在 Debian 12 上,请先用 apt install -y snapd 和 snap install snapd 安装 snapd。然后:

snap install --classic certbot
ln -s /snap/bin/certbot /usr/local/bin/certbot
certbot --nginx -d example.com -d www.example.com
certbot renew --dry-run

Certbot 会验证您对域名的控制权,把证书添加到 server 块中,并默认将 HTTP 重定向到 HTTPS。snap 会自动续期证书,演练(dry run)则用于测试续期。Certbot 还会要求提供邮箱地址,您可以用 --register-unsafely-without-email 跳过,代价是收不到吊销等通知。Let's Encrypt 已于 2025年6月4日停止发送到期提醒。现在,您的仪表盘位于 https://example.com/wp-admin/。

让 WordPress 更快

在 /var/www/example.com 目录中运行 wp,PHPV 按上文设置。PHP OPcache 会把编译后的代码保存在内存中,默认已启用,大小为 128 MB;以下命令必须输出 opcache.enable => On => On:

php-fpm$PHPV -i | grep '^opcache.enable '

页面缓存会把每个页面保存为静态 HTML,并提供给后续访客。Automattic 出品的 WP Super Cache 在其推荐的“简单”模式下通过 PHP 提供这些文件,因此无需任何 Nginx 规则;WooCommerce 会告诉它跳过购物车、结账和账户页面:

sudo -u www-data wp plugin install wp-super-cache --activate

在设置 > WP Super Cache 中开启缓存。退出登录后,页面源代码末尾会显示注释 Cached page generated by WP-Super-Cache。对象缓存会把 WordPress 原本要从数据库读取的数据保存在内存中,从而加速页面缓存无法提供的页面。Redis 和 Redis Object Cache 插件可以实现对象缓存:

apt install -y redis-server php-redis
systemctl restart php$PHPV-fpm
sudo -u www-data wp plugin install redis-cache --activate
sudo -u www-data wp redis enable
sudo -u www-data wp redis status

状态必须显示为 Connected;Redis 只监听 127.0.0.1 和 ::1。PHP-FPM 默认最多运行五个工作进程(/etc/php/$PHPV/fpm/pool.d/www.conf 中的 pm.max_children):在更大的套餐上,只要所有工作进程仍能放入内存,就可以调高该值。

WordPress 的安全与备份

只开放 SSH、HTTP 和 HTTPS

apt install -y ufw
ufw limit 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
ufw status verbose

对 SSH 警告回答 y;如果您修改过 SSH 端口,请使用自己的端口。80 端口用于重定向到 HTTPS 以及 Certbot 续期。

自动更新

自 WordPress 5.6 起,新安装的站点会自动更新到次要版本和主要版本,我们的测试安装也开启了主要版本更新。插件和主题则需要手动开启:

cd /var/www/example.com
sudo -u www-data wp plugin auto-updates enable --all
sudo -u www-data wp theme auto-updates enable --all

更新检查属于 WP-Cron 事件,而 WP-Cron 只在页面加载时运行,所以请把它交给系统计划任务:

sudo -u www-data wp config set DISABLE_WP_CRON true --raw
echo '*/5 * * * * www-data cd /var/www/example.com && /usr/local/bin/wp cron event run --due-now --quiet' > /etc/cron.d/wordpress

收紧文件权限

find /var/www/example.com -type d -exec chmod 755 {} +
find /var/www/example.com -type f -exec chmod 644 {} +
chmod 640 /var/www/example.com/wp-config.php

在 Ubuntu 上,sudo 会给 www-data 设置 002 的 umask,因此 WP-CLI 创建的文件对同组用户可写;以下命令会恢复 755 和 644 权限,并让 wp-config.php 保持私有。如果要完全禁止 PHP 修改代码,可以把文件交给另一个用户,只允许 www-data 写入 wp-content/uploads:这样自动更新会停止,您需要以该用户身份用 WP-CLI 更新。

限制登录和 XML-RPC

减缓密码猜测:创建 /etc/nginx/conf.d/wp-login-limit.conf,写入这一行,

limit_req_zone $binary_remote_addr zone=wplogin:10m rate=10r/m;

然后把以下代码块添加到 server 块中(在 Debian 12 上使用 php8.2-fpm.sock),运行 nginx -t 并重新加载:

location = /wp-login.php {
    limit_req zone=wplogin burst=5 nodelay;
    limit_req_status 429;
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}

location = /xmlrpc.php {
    deny all;
}

每个地址可以快速发起六次登录请求,之后每六秒一次:在我们的测试中,第七次快速请求收到了 429 错误。第二个代码块会关闭 XML-RPC API,其他应用会通过它创建和编辑文章、媒体和评论。如果您需要 XML-RPC(例如 Jetpack 就需要),请不要添加这个代码块。

快照和服务器外备份

进行大版本更新前,请在服务器页面的“服务器操作”中申请创建快照;VPS 套餐包含 2 到 5 个快照。快照与 VPS 存放在一起,因此还应导出数据库,并用 restic 或 Borg 把 /var/www 和导出文件发送到其他地方,具体方法见 VPS 快照与异地备份:

mkdir -p /root/db-dumps
chmod 700 /root/db-dumps
mariadb-dump --single-transaction wordpress > /root/db-dumps/wordpress.sql

从 WordPress 发送邮件

WordPress 通过 PHP 的 mail 函数,把密码重置、评论通知和网店订单交给 /usr/sbin/sendmail。在我们测试的 Debian 和 Ubuntu 系统上,这个程序并不存在,wp_mail() 返回 false;而且我们网络上的出站 25 端口默认是关闭的。您有两种发信方式:

  1. 使用 587 端口的 SMTP 中继,更简单。选择一个支持 SMTP 认证提交的邮件服务,把它的 SPF 和 DKIM 记录添加到您的 DNS 中,然后用 FluentSMTP 等插件连接 WordPress——该插件免费,并支持任何 SMTP 服务器。25 端口的封锁不影响 587 端口。
  2. 通过 25 端口直接投递。在服务器页面的“服务器操作”中申请开放 25 端口(发信),并说明您要发送什么邮件、从哪个域名发送。然后为您的邮件主机名申请设置反向 DNS(PTR),并发布 SPF 和 DKIM 记录。

无论哪种方式,垃圾邮件和网络钓鱼都属于零容忍违规,服务会被立即终止。

在离岸网站前加 CDN:会带来哪些变化

您不需要靠 CDN 来获得防护:我们的网络已包含 DDoS 防护,并在边缘进行常驻过滤。CDN 可以为远方的读者加快网站速度,但它会在访客和您的服务器之间多加一家公司,而这家公司有自己的司法管辖区和投诉规则。

以旧金山的 Cloudflare, Inc. 为例。访问经其代理的网站的流量会经过 Cloudflare,而这种反向代理能够解密流量。Cloudflare 会把版权投诉转发给网站运营者和主机服务商,向权利人提供主机服务商的信息,并允许其“可信举报人”计划中的机构获取源站 IP 地址。对于滥用投诉,它会把源站 IP 地址告知主机服务商。

因此,CDN 能对公众隐藏服务器地址,却无法对投诉人隐藏。如果您使用 CDN,请用 CDN 的地址段配置 Nginx 的 real IP 模块,否则上文的登录限制统计的将是 CDN 的服务器,而不是您的访客。

常见问题

什么是离岸 WordPress 主机?

就是把 WordPress 运行在另一个国家、根据当地法律挑选的服务器上。要用这种方式离岸托管网站,您需要在当地租用一台 VPS 并在上面安装 WordPress。主机服务商随后遵守当地法律:美国 DMCA 通知不予执行,但当地法院以及欧盟国家的《数字服务法》通知仍可以要求采取行动。

合法。在几乎所有国家,租用境外服务器都是合法的;可能违法的是用途。违法内容在离岸同样违法,服务器所在国决定主机服务商必须做什么,您本国的法律也仍然适用于您。我们的文章离岸主机合法吗介绍了数据保护、制裁和税务方面的问题。

我可以匿名托管 WordPress 网站吗?

部分可以。我们的账户只需邮箱地址和密码,用加密货币付款,无需身份验证,详见我们的无需 KYC 的 VPS。但匿名网站托管还取决于域名注册商,它可能要求更多信息,并会保留您提供的一切。此外,WordPress 会公开您的管理员用户名,您写的内容也可能暴露您的身份。

你们提供托管型 WordPress 主机吗?

不提供。我们不销售共享主机或托管型 WordPress 主机。您会得到一台拥有完整 root 权限的 VPS,自行在上面安装 WordPress,按照本指南大约需要 20 到 30 分钟。之后,更新、备份和安全都由您负责,上面的步骤可以让更新自动进行。

WordPress 需要多少内存?

对于一个小网站,1 GB 内存配合交换文件即可运行,2 GB 会比较宽裕。在我们的 Debian 12 测试系统上,刚安装完时 MariaDB 约占 110 MB,五个 PHP-FPM 工作进程合计约占 105 MB;插件会让每个工作进程占用更多内存。高流量博客或多个网站请按 4 GB 规划,WooCommerce 网店请按 8 GB 规划。

选择法律站在您这边的地方托管

离岸 VPS、独立服务器、RDP 与 GPU 服务器,覆盖七个司法管辖区。无需 KYC,使用加密货币付款。

欢迎回来

登录以管理您的服务器和余额。

无需 KYC由 Cloudflare Turnstile 提供人机验证无跟踪