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

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

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

做外贸时,很多站点用子目录区分语言,比如 example.com/enexample.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-datanginx):

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.comroot 换成 /var/www/de,日志文件名也对应改掉。
其余语言版本照此复制修改即可。

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

测试配置并重载 Nginx

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

nginx -t

看到 syntax is oktest 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.confhttp 段里加一个默认返回 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
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意