多语言外贸站点Nginx完整多域名隔离配置教程

多语言外贸站点用Nginx做多域名隔离,本质是给每个语言版本分配独立的 server 块和独立的根目录,让每个域名只加载自己的文件,互不干扰。
本文按零基础可操作的方式,讲清楚准备条件、核心配置、重载验证和常见报错处理,照着做就能把多语言外贸站从单站点迁到多域名独立部署。

为什么外贸站需要多域名隔离

做外贸时,很多站点用子目录区分语言,比如 example.com/en、example.com/de。
这种结构维护简单,但 SEO 语言属性不清晰,且某个语言文件出错容易影响全站。
改用多域名隔离后,英文站绑定 en.example.com,德语站绑定 de.example.com,各自有独立目录、独立配置和独立日志,排错、升级、迁移都更方便。

开始前准备好三样东西:

  • 一台安装了 Nginx 的云服务器(国内部署域名需备案,海外服务器免备案,按你的业务地区选择)。
  • 已解析到服务器的至少两个域名(或子域名),建议先做 A 记录解析。
  • 各域名对应的 SSL 证书文件,配置 HTTPS 时使用。

规划目录并写入站点文件

先为每个语言创建独立根目录,这里以英文站和德语站为例:

mkdir -p /var/www/en
mkdir -p /var/www/de

把对应语言的程序文件分别上传到这两个目录,并设置属主为 Nginx 运行用户(常见是 www-data 或 nginx):

chown -R www-data:www-data /var/www/en /var/www/de

目录规划好后,开始写 Nginx 虚拟主机配置。
为了便于维护,建议在 /etc/nginx/conf.d/ 下按域名拆分配置文件。

编写多域名隔离 Nginx 配置

新建 /etc/nginx/conf.d/en.conf,内容如下:

server {
    listen 80;
    server_name en.example.com;
    root /var/www/en;
    index index.php index.html;

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

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    access_log /var/log/nginx/en_access.log;
    error_log  /var/log/nginx/en_error.log;
}

再新建 /etc/nginx/conf.d/de.conf,把 server_name 换成 de.example.com,root 换成 /var/www/de,日志文件名也对应改掉。
其余语言版本照此复制修改即可。

每个 server 块隔离了域名、根目录和日志,这就是多域名隔离的核心:一个域名对应一个 server 块,一个 server 块只服务一个目录。

测试配置并重载 Nginx

配置写完后,先检查语法:

nginx -t

看到 syntax is ok 和 test is successful 再执行重载:

systemctl reload nginx

然后验证域名是否映射到正确目录:

curl -H "Host: en.example.com" http://127.0.0.1
curl -H "Host: de.example.com" http://127.0.0.1

返回对应站点的首页内容即为成功。
如果域名已解析到服务器,也可以直接通过浏览器访问 http://en.example.com 检查。

避坑:多域名隔离最容易出错的四个点

1. 默认 server 抢占导致域名显示同一个站。 如果 Nginx 中没有设置默认 server,第一个加载的 server 块会接收所有未匹配域名。
建议在 nginx.conf 的 http 段里加一个默认返回 444 的空 server:

server {
    listen 80 default_server;
    return 444;
}

这样未绑定的域名访问会被直接断开,不会串到其他站点。

2. 根目录权限不对导致 403。 上传文件后如果目录没有执行权限,Nginx 会返回 Permission denied。
用 ls -l /var/www 检查目录权限,确保 Nginx 用户能读和进入。

3. PHP 解析路径配错。 不少外贸站使用 PHP 程序,fastcgi_param SCRIPT_FILENAME 必须写成 $document_root$fastcgi_script_name,否则会报 File not found。
注意 $document_root 会跟着 server 块里的 root 自动变化,所以每个配置都要确认 root 路径正确。

4. 只改了配置但没有重载。 修改配置文件后必须执行 systemctl reload nginx,很多“改了没生效”都是漏了这一步。
建议每次改完都跑一遍 nginx -t 再重载。

加上 HTTPS 并检查跳转

外贸站大多要做 HTTPS,在 server 块里加 80 跳 443 的配置即可:

server {
    listen 80;
    server_name en.example.com;
    return 301 https://$host$request_uri;
}

然后在 443 server 块里引用对应证书:

server {
    listen 443 ssl http2;
    server_name en.example.com;
    root /var/www/en;

    ssl_certificate     /etc/ssl/en.example.com.crt;
    ssl_certificate_key /etc/ssl/en.example.com.key;

    # 其余配置与 http 块一致
}

改完同样执行 nginx -t && systemctl reload nginx,
再用 curl -I https:
//en.example.com
查看返回码是否为 301 或 200。

如果你在配置过程中出现“A 域名跳转到 B 域名”“样式全部丢失”“403 错误”等问题,多数与 above 中的默认 server、根目录权限或路径错误有关。
尤其是刚接触多语言外贸站点的用户,先把例子中的配置完整跑通再改参数,比边写边试更少踩坑。

多域名隔离配置完成后,每个语言站点都可以独立更新、独立缓存、独立监控。
建议再按你的程序需求给每个 server 块补充 gzip、静态缓存和防盗链规则,让外贸站访问速度更稳。

分享到:
上一篇
宝塔部署定时任务磁盘满自动清理日志脚本
下一篇
慢查询批量优化脚本解决数据库卡顿查询缓慢
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意