Nginx多语言站点配置适配海外访客访问

为什么需要配置多语言站点

如果你的网站有来自不同国家的访客,让浏览器自动切换语言版本可以显著提升体验。
比如在 Nginx 上配置多语言站点,访客从海外访问时直接跳转到英文页面,国内用户看到中文页面。
下面我用最直接的步骤带你完成配置,无需复杂开发经验。

准备工作

你需要先确认以下条件:

  • 一台服务器:安装好 Nginx(建议 1.18+ 版本),可以用宝塔面板或直接命令行操作。
  • 已解析的域名:比如 example.com,并且你已经在 Nginx 里配置了基本的 server 块。
  • 准备多语言内容:假设你已把不同语言的页面放在不同目录下,例如:
  • /var/www/example/en/(英文)
  • /var/www/example/zh/(中文)
  • /var/www/example/ja/(日文)

如果还没有准备好目录,先创建并放好对应语言的文件。

方案一:基于 URL 路径区分语言

这是最常见的做法,访客通过 example.com/en/、example.com/zh/ 访问不同语言。
Nginx 配置很简单:

server {
    listen 80;
    server_name example.com;

    location /en/ {
        alias /var/www/example/en/;
        try_files $uri $uri/ /en/index.html;
    }

    location /zh/ {
        alias /var/www/example/zh/;
        try_files $uri $uri/ /zh/index.html;
    }

    location /ja/ {
        alias /var/www/example/ja/;
        try_files $uri $uri/ /ja/index.html;
    }

    location / {
        # 默认使用中文
        rewrite ^/$ /zh/ permanent;
    }
}

注意:alias 和 try_files 配合时,try_files 的参数路径要基于 alias 后的实际目录路径写,否则可能 404。
上面示例已做调整。

方案二:基于子域名(适合大型站点)

用 en.example.com、zh.example.com 等,然后用不同的 server 块分别配置。
配置片段:

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

server {
    listen 80;
    server_name zh.example.com;
    root /var/www/example/zh;
    index index.html;
}

这种方法需要提前做好子域名的 DNS 解析。

根据访客语言自动重定向(关键步骤)

上面两种方案只能让用户手动切换,下面用 Nginx 的 map 指令根据 Accept-Language 请求头自动跳转到对应语言版本,适合零基础用户复制。

在 Nginx 配置文件的 http 块(通常在 /etc/nginx/nginx.conf)中添加:

map $http_accept_language $lang {
    default zh;
    ~*^en en;
    ~*^ja ja;
    ~*^zh zh;
}

然后在 server 块中用如下判断实现自动跳转(假设你使用方案一的路径结构):

server {
    listen 80;
    server_name example.com;
    root /var/www/example;

    # 首页自动重定向
    location = / {
        if ($lang !~* ^zh) {
            rewrite ^ /$lang/ permanent;
        }
        # 中文用户直接访问默认目录
        rewrite ^ /zh/ permanent;
    }

    location /en/ {
        alias /var/www/example/en/;
        try_files $uri $uri/ /en/index.html;
    }

    location /zh/ {
        alias /var/www/example/zh/;
        try_files $uri $uri/ /zh/index.html;
    }

    location /ja/ {
        alias /var/www/example/ja/;
        try_files $uri $uri/ /ja/index.html;
    }
}

解释:

  • map 指令将 Accept-Language 头部映射为语言代码,例如浏览器发送 en-US,en;q=0.9,则匹配到 en。
  • location = / 处理首页,如果检测到非中文语言就 301 重定向到对应路径。
  • 中文用户直接重定向到 /zh/。

注意:if 在 location 里性能影响极小,用于首页重定向没问题。
如果你担心,可以用 return 301 替代 rewrite。

配置完成后重载 Nginx

配置修改后执行:

nginx -t          # 测试配置语法
systemctl reload nginx   # 重载生效

验证方法

使用 curl 模拟不同语言访问:

# 模拟英文浏览器
curl -H "Accept-Language: en-US" -I http://example.com/
# 返回的 Location 应指向 /en/

# 模拟中文浏览器
curl -H "Accept-Language: zh-CN" -I http://example.com/
# 返回的 Location 应指向 /zh/

# 模拟日文浏览器
curl -H "Accept-Language: ja" -I http://example.com/
# 返回的 Location 应指向 /ja/

浏览器测试:用无痕窗口设置首选语言后访问首页,观察地址栏跳转。

常见问题与避坑

1. 重定向循环
如果发现一直跳转,检查默认语言路径是否被当作非默认语言再次重定向。建议在 location /zh/ 里也加上内部 rewrite 保证不循环。简单做法:用 try_files 直接提供内容,不触发外部跳转。

2. 浏览器发送的 Accept-Language 格式多样
map 中的正则 ~*^en 只匹配以 en 开头的语言代码(忽略大小写)。如果有些浏览器发送 en-gb 也能匹配,但如果你只需要精确匹配可以写更严格的正则。

3. 使用宝塔面板的用户
宝塔的 Nginx 配置在 /www/server/panel/vhost/nginx/ 下,直接在对应站点配置文件中添加 map 和跳转规则即可。注意 map 必须放到 http 块内,普通用户可先备份原配置,然后在宝塔面板的“配置修改”中找到顶部 http { 的结束位置前插入 map 代码。

4. SEO 注意事项
使用 301 重定向告知搜索引擎不同语言的对应关系,但不要滥用。建议同时添加 标签到每一页的 HTML 头部。

写在最后

通过上述步骤,你已经能用 Nginx 为海外访客配置多语言站点,让他们自动访问适合自己的语言版本。
实际部署时注意根据你的目录结构和语言数量微调 map 和 location 规则。
如果在配置过程中遇到 404 或循环重定向,优先检查路径和重写规则,并用 nginx -t 验证语法。

分享到:
上一篇
家用住宅NAS同步跨境网站全站备份数据
下一篇
产品图片WebP压缩降低海外加载延迟
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 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意