【问题标题】:Need apache_note() function with nginx / usertrack for nginx需要 apache_note() 函数和 nginx / usertrack for nginx
【发布时间】:2012-11-04 00:09:42
【问题描述】:

我有 nginx 服务器,但需要运行 apache_note() 功能。
是否有提供此功能的模块或 nginx 补丁? 还需要 usertrack 扩展(在 apache 中很容易获得)用于 nginx 或类似的替代方案。如果 nginx 没有可用的 usertrack,请建议一些模拟相同功能的逻辑。

【问题讨论】:

  • @VBart ,我知道这就是为什么要求 nginx 替代它。
  • @VBart apache_note 如果您想在 access_log 上添加额外的信息,那么@VBart apache_note 非常方便,以便以后可以对其进行按摩以提供更好的见解。假设您正在为 x% 的访问该页面的用户在相同的 url 上运行 ab 实验,apache_note 使您能够显示用户是点击 A 还是 B,而无需用户传递额外的查询参数。
  • @dminer 您可以将响应标头用于相同目的。更有什者,nginx有一个专门的A/B测试模块:nginx.org/en/docs/http/ngx_http_split_clients_module.htmlapache_note()是php函数,nginx和php无关。

标签: php apache nginx


【解决方案1】:

我看到对此有一个公认的答案,只是添加它,因为我猜包括我自己在内的很多人都是通过 Google 搜索 apache_note 和 Nginx 来到这里的。

使用 apache_note 的一个主要原因是在访问日志中存储一些内容。例如,当您不使用基本身份验证时的用户名。

使用 PHP 和 Nginx 实现此目的的一种简单方法是将其作为标头发送并记录。

PHP:header('username: johndoe');

在 nginx.conf 中的 log_format 中添加以下内容:$sent_http_username

所有标题都以 $sent_http_HEADERNAME 的形式提供给日志

【讨论】:

    【解决方案2】:

    还需要用于 nginx 或类似替代方案的 usertrack 扩展(在 apache 中很容易获得)。

    http://nginx.org/en/docs/http/ngx_http_userid_module.html

    【讨论】:

    • 是的,昨天我才知道它。仍在测试它是否像 usertrack 一样工作。
    • 非常感谢。看起来它可以工作。但问题是设置 cookie 需要一个请求,并且从第二个请求中我可以获取该 cookie。我可以从第一个请求本身访问 cookie 吗?
    • 看来你已经找到答案了:stackoverflow.com/questions/13412100/…
    【解决方案3】:

    我在寻找 apache_note() 的 NGINX 替代品时也发现了这一点。关于它的信息不多,我发现提到的唯一解决方案是只使用响应标头。仅此一项不适用于您不想发回给用户的数据,这就是我正在处理的情况。

    我找到的解决方案是使用HttpHeadersMoreModule 在将标题传递给用户之前清除它们。这也会清除“$sent_http_”变量,但保留“$upstream_http_”可用于您的日志。

    【讨论】:

      猜你喜欢
      • 2018-06-06
      • 2021-12-02
      • 1970-01-01
      • 2018-11-04
      • 1970-01-01
      • 2012-08-18
      • 2015-07-04
      • 2015-12-24
      • 2020-08-30
      相关资源
      最近更新 更多