Umami 切换中文后无法保存的排查与解决

问题现象

在 Umami 管理后台的 设置 → 个人资料 中,可以选择"中文",但点击 "确定" 后无法保存语言偏好。浏览器开发者工具控制台报错:

GET /intl/messages/zh-CN.json 404 (NOT FOUND)

容器内测试该地址返回正常(200 OK),但通过外部 80 端口访问即返回 404。

根因分析

Umami 切换语言时,前端会请求 /intl/messages/zh-CN.json 获取中文翻译文件。该文件在容器内存在且 Web 服务正常,但 Nginx 反向代理配置不完整:

配置文件中只对 /_next/、/api、/login、/dashboard 等部分路径做了 proxy_pass,缺少 /intl/ 路径的转发规则。请求到达 Nginx 后无法匹配任何 location,直接被当作静态文件去本地查找,找不到便返回 404,请求从未到达后端的 Umami 容器。

⚠️ 关键点:语言翻译文件是通过独立的 /intl/ 路径加载的,不属于常规的 API 或页面路由,很容易遗漏。

解决方案

在 Nginx 配置中增加 /intl/ 的代理规则即可:

location /intl/ {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header Host $host;
}

保存后重载配置:

sudo nginx -t
sudo systemctl reload nginx

知识点总结

问题 原因 解决
中文语言无法保存 /intl/ 路径未加入反向代理 在 Nginx 中补充 /intl/ 的 proxy_pass 规则
控制台报 404 Nginx 找不到文件,未转发到 Umami 重载 Nginx 配置即可

部署 Umami 或其他 Next.js 应用时,如果遇到类似的功能异常,可以优先检查浏览器控制台的 404 请求路径,补充遗漏的反向代理规则往往是解决问题的关键。

返回首页

评论(3)

t
test 2026-07-22 02:42
test_comment_security_check
<
<img src=x onerror=a 2026-07-22 02:43
test_xss_author
t
test_xss2 2026-07-22 02:43
<img src=x onerror=alert(document.cookie)>

发表评论