【问题标题】:nginx GeoIP Cache Keynginx GeoIP 缓存密钥
【发布时间】:2016-03-04 15:14:07
【问题描述】:

我想在 nginx 中使用 GeoIP 来根据国家/地区提供不同的页面。我也想缓存一切。

当来自美国的用户访问我的主页时,我希望他们从缓存中看到主页的美国版本。当来自英国的用户访问我的主页时,我希望他们从缓存中看到主页的英国版本。

安装 GeoIP 模块后,我可以将国家代码放在我的缓存键中吗?这是提高性能的最佳方法吗,因为现在服务器将为每个 IP 查找国家/地区。我不知道这是不是很重要。

我正在考虑获取浏览器的 userLanguage 设置并通过 AJAX 发送,然后将其缓存。只需要对几个字符进行地理定位。

Best way to determine user's locale within browser

【问题讨论】:

    标签: nginx geoip


    【解决方案1】:

    按照标准教程安装 GeoIP 模块后,我只需将国家代码放入我的缓存键中即可:

    $scheme$request_method$host$request_uri$geoip_country_code
    

    我读到 nginx 将 GeoIP 数据库加载到内存中,因此性能似乎保持不变。

    我发现了比 GeoIP 查找更能影响性能的其他问题:

    1. CGI 出现 404 个错误
    2. Cachekey 不包含查询字符串。查询字符串的不同变体比国家/地区多得多。
    3. 清除缓存。通过删除所有文件清除缓存之前。现在我正在考虑使用 wget 获取新页面,然后将它们复制到缓存中。

    【讨论】:

    • 如果您使用的是 Cloudflare,则可以完全跳过所有 GeoIP 模块设置并使用已经可用的 $http_cf_ipcountry 变量。对于像我这样的 nginx 新手,这在你的 nginx 配置中如下所示:proxy_cache_key "$scheme$request_method$host$request_uri$http_cf_ipcountry"; 或者你可以将 proxy_cache_key 换成 fastcgi_cache_key
    猜你喜欢
    • 2019-02-04
    • 2015-03-05
    • 2017-04-09
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    • 2022-06-17
    • 2021-04-05
    相关资源
    最近更新 更多