本页内容

离岸 WordPress 主机是指把您的 WordPress 网站运行在另一个国家的服务器上,受该国法律管辖。我们不销售共享主机或托管型 WordPress 主机。您可以在拥有完整 root 权限的离岸 VPS 上自行安装 WordPress,月付 $2.39 起;按照本指南操作,只需 20 到 30 分钟。
以下步骤适用于
离岸 WordPress 主机是什么意思
您的网站运行在一台 VPS 上,所在国家由您根据当地法律来挑选:在我们这里,可选冰岛、瑞士、摩尔多瓦、罗马尼亚、荷兰、保加利亚或马来西亚。有三件事会发生变化:
- 美国 DMCA 通知不予执行。DMCA 在这些国家没有法律效力:通知会被记录并得到答复,服务器不受任何影响。这才是“无视 DMCA 的 WordPress 主机”的准确含义。
- 由当地法律决定。服务器所在国的有效法院命令可以要求我们采取行动。除非法院禁止,我们会先通知您,让您有机会回应。
- 欧盟地区适用欧盟规则。在罗马尼亚、荷兰和保加利亚,符合欧盟《数字服务法》“通知与行动”要求的通知同样可以要求我们采取行动。
不变的是:违法内容依然违法,您本国的法律依然适用于您;垃圾邮件、网络钓鱼、恶意软件、攻击、欺诈和儿童性虐待材料会导致立即处理。我们的无视 DMCA 主机页面列出了投诉处理流程,无视 DMCA 主机详解一文则介绍了还有哪些途径可能影响网站。
为离岸 WordPress 主机选择套餐和地区
内存是 WordPress 服务器最先遇到的瓶颈,而网店需要的内存最多:WooCommerce 的购物车、结账和账户页面包含每位顾客自己的数据,因此页面缓存必须跳过这些页面,由 PHP 为每位访客单独生成。
| 网站 | 套餐 | vCPU、内存、NVMe | 每月 |
|---|---|---|---|
| 测试站点或小型个人博客 | Dinghy | 1 个 vCPU、 | $2.39 |
| 博客或企业网站 | Sloop | 1 个 vCPU、 | $3.49 |
| 高流量博客或多个网站 | Cutter | 2 个 vCPU、 | $5.49 |
| WooCommerce 网店 | Schooner | 4 个 vCPU、 | $12.49 |
| 高流量或多个网店 | Brigantine | 6 个 vCPU、 | $19.99 |
根据我们网络页面上的延迟估算,选择离大多数读者最近的地区,然后在地区页面查看当地法律。新 VPS 的首个付费周期享有 72 小时退款保证,如无待处理的滥用投诉,款项将退回您的余额。如果网站超出了套餐的承载能力,可在“服务器操作”中申请升级到更大的套餐。
让域名和服务器一样安全
主机服务商掌控的是服务器,而不是域名。注册商是您注册域名时所通过的公司;注册局运营机构维护顶级域名的主数据库并运行其域名服务器。无论您的服务器在哪里,两者都受其本国法律和合同约束。
ICANN 的域名查封指南介绍了法院如何下令让注册局或注册商锁定域名、停止解析或将其转移。根据 IANA 的记录,.com 和 .net 注册局由位于弗吉尼亚州雷斯顿的 VeriSign Global Registry Services 运营。因此,无论网站运行在哪里,美国法院的命令都可以让 .com 或 .net 域名下线:服务器照常运行,但访客无法再通过该域名访问。选择注册商和域名时,要像选择主机服务商一样谨慎:
- 注册商:它所在的国家、它关于投诉和法院命令的条款,以及它要求提供的身份信息。
- 顶级域名:根区数据库会显示由谁运营、在哪里运营。
- WHOIS 隐私保护:隐私服务会把您的联系信息从 WHOIS 中隐去,而代理服务则会代替您成为登记持有人。无论哪种方式,服务商仍然掌握您的信息,并受其本国法律约束。
安装 Nginx、PHP 和 MariaDB
在 VPS 上搭建 WordPress,要从 Web 服务器、PHP 和数据库开始。订购安装 sudo -iexample.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 模块均已安装。
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
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_PASSwp-config.phpmariadb-secure-installationmysql_secure_installation
用 WP-CLI 安装 WordPress
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 --fingerprintgpg --verifywww-data
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.wp-cliwp-config.php
配置 Nginx 和 HTTPS
将 example.comwww.example.com/etc/nginx/sites-available/example.com,在 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 - 拒绝规则
- 隐藏文件(如
)以及上传目录中的 PHP 文件会返回 403 错误;.git 保持开放。/.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/tcpapt install -y snapdsnap install 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-emailhttps://example.com/wp-admin/
让 WordPress 更快
在 /var/www/example.comwpPHPVopcache.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/etc/php/$PHPV/fpm/pool.d/www.confpm.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
自动更新
自 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
更新检查属于
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 上,sudowww-datawp-config.phpwww-datawp-content/uploads
限制登录和 XML-RPC
减缓密码猜测:创建 /etc/nginx/conf.d/wp-login-limit.conf,写入这一行,
limit_req_zone $binary_remote_addr zone=wplogin:10m rate=10r/m;
然后把以下代码块添加到 server 块中(在 php8.2-fpm.socknginx -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 错误。第二个代码块会关闭
快照和服务器外备份
进行大版本更新前,请在服务器页面的“服务器操作”中申请创建快照;VPS 套餐包含 2 到 5 个快照。快照与 VPS 存放在一起,因此还应导出数据库,并用 restic 或 Borg 把 /var/www
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/sendmailwp_mail()
- 使用 587 端口的 SMTP 中继,更简单。选择一个支持 SMTP 认证提交的邮件服务,把它的 SPF 和 DKIM 记录添加到您的 DNS 中,然后用 FluentSMTP 等插件连接 WordPress——该插件免费,并支持任何 SMTP 服务器。25 端口的封锁不影响 587 端口。
- 通过 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 需要多少内存?
对于一个小网站,


