精选的想法、故事和创意,全部汇集于此!

文章背景图

腾讯云EdgeOne设置好后让umami识别访问者的城市

2026-07-09
74
-
- 分钟

前言

umami部署好后只识别访问者的国家,问了豆包得出了以下方法

问题根源

你现在只能看到国家、看不到省市,核心原因是:Umami 拿到的访客 IP 是 EdgeOne 的边缘节点 IP,不是用户的真实 IP。用 CDN 节点 IP 去查询地理位置,只能解析到国家层级,无法得到准确的省市信息。

下面提供两套可直接操作的方案,按难度从低到高排列:


方案一:开启真实 IP 回源(小白首选,操作最少)

做完这两步,Umami 就能拿到用户真实 IP,再用自带的 MaxMind GeoLite2 城市数据库自动解析出省市和城市。

第 1 步:EdgeOne 开启真实客户端 IP 头部

  1. 登录腾讯云 EdgeOne 控制台,进入你的站点 swlt.work

  2. 左侧菜单点击「站点加速」→「网络优化」

  3. 找到「真实客户端 IP 头部」卡片,点击开关开启

  4. 头部名称保持默认 EO-Connecting-IP 即可,点击保存。

第 2 步:给 Umami 添加环境变量

如果你是 Docker(docker-compose)部署,编辑你的 docker-compose.yml,在 umami 服务的 environment 中添加一行:

environment:
  # 保留你原有的 DATABASE_URL、APP_SECRET 等配置
  CLIENT_IP_HEADER: EO-Connecting-IP

保存后执行 docker compose up -d 重启容器生效。

如果是宝塔面板部署,在 Docker 管理或网站配置中添加该环境变量即可。


方案二:EdgeOne 直接传递省市信息(更精准,进阶方案)

EdgeOne 本身就能解析访客 IP 的省 / 市信息,我们可以直接把这些数据通过请求头传给 Umami。Umami 原生兼容 Cloudflare 格式的地理头,我们只需把 EdgeOne 的地理信息包装成对应名称的头即可,定位精度和 EdgeOne 完全一致,国内省市更准。

前置要求

先完成「方案一」的所有步骤(保证真实 IP 正常传递)。

第 1 步:在规则引擎中添加自定义回源头

  1. EdgeOne 控制台 → 站点加速 → 规则引擎

  2. 点击「创建规则」→「新增空白规则」

  3. 匹配条件:选择 HOST,等于 你的umami 域名

  4. 添加操作:选择「修改 HTTP 回源请求头」,操作类型选「增加」

  5. 依次添加以下 3 个请求头:

    头部名称

    头部值

    作用

    CF-IPCountry

    ${http.request.ip.country}

    国家代码

    CF-Region-Code

    ${http.request.ip.region_code}

    省份代码(如 CN-JX 江西)

    CF-IPCity

    ${http.request.ip.city}

    城市名称

  6. 点击「保存并发布」,等待 1-2 分钟生效。

如果设置了反代还需要进行以下步骤

第 1 步:打开站点配置文件

  1. 登录宝塔面板,左侧点击「网站」

  2. 找到对应 umami 的站点,点击右侧「设置」

  3. 在弹出的窗口左侧,点击「配置文件」,进入 Nginx 配置编辑页

第 2 步:添加头转发规则

在配置文件中找到 location / 对应的代码块,在 proxy_pass 这一行的下方,粘贴以下代码:

# 转发 EdgeOne 传递的真实客户端IP
proxy_set_header EO-Connecting-IP $http_eo_connecting_ip;

# 转发 EdgeOne 地理信息头(国家/省份/城市)
proxy_set_header CF-IPCountry $http_cf_ipcountry;
proxy_set_header CF-Region-Code $http_cf_region_code;
proxy_set_header CF-IPCity $http_cf_ipcity;

# 补充标准转发头,避免IP识别异常
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $http_eo_connecting_ip;

注意:代码必须放在 location / { ... } 的大括号内部,和 proxy_pass 同级。

第 3 步:保存生效

点击配置文件右上角「保存」,宝塔会自动重载 Nginx 配置,提示保存成功即可。

原创

腾讯云EdgeOne设置好后让umami识别访问者的城市

本文链接: 腾讯云EdgeOne设置好后让umami识别访问者的城市

本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

评论交流

文章目录