【问题标题】:PHP 5.5 FastCGI CachingPHP 5.5 FastCGI 缓存
【发布时间】:2014-05-04 15:30:42
【问题描述】:

我已经在我们的网站上实现了 FastCGI 缓存,并且看到了极大的速度改进。然而,FastCGI 缓存键似乎不够独特。如果我登录,我的名字会出现在标题中。但是,假设缓存仍然有效,下一个登录的人仍然会在标题中看到我的名字。

有没有办法让每个用户的缓存键都是唯一的?理想情况下使用来自用户 Cookie 或 PHP 会话的唯一标识符?我尝试实现了下面的答案,但 Nginx 无法重启。

Log in value from Set-Cookie header in nginx

请注意,我的缓存键如下所示:

fastcgi_cache_key "$scheme$request_method$host$request_uri";

更新: 我的想法是,如果我可以解析发送到 Nginx 的 HTTP 标头,那么我可以获取 PHP SESSION ID 并使用它。但是,我无法在任何地方找到如何执行此操作的示例。现在我有这样的东西,它不起作用。

http_cookie ~* PHPSESSID=([0-9a-z]+) {
    set $ses_id $1;
}

【问题讨论】:

    标签: php nginx fastcgi


    【解决方案1】:

    我能够使用Nginx ngx_http_userid_module 解决上述问题。最困难的部分实际上是找到模块,实现解决方案非常简单。

    我使用了他们的示例配置:

    userid         on;
    userid_name    uid;
    userid_domain  example.com;
    userid_path    /;
    userid_expires 365d;
    userid_p3p     'policyref="/w3c/p3p.xml", CP="CUR ADM OUR NOR STA NID"';
    

    然后将用户 ID 添加到我的 fastCGI 缓存键中:

    fastcgi_cache_key "$scheme$request_method$host$request_uri$uid_got";
    

    希望这个答案能帮助别人比我更快地发现这个有用的模块。

    【讨论】:

      猜你喜欢
      • 2015-03-26
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 2015-11-03
      • 2016-02-21
      • 1970-01-01
      • 2013-01-17
      • 2014-06-20
      相关资源
      最近更新 更多