FCGI 或 mod_php 上的会话不同吗?

FCGI 或 mod_php 上的会话不同吗?

我有一组在 apache-php(使用 prefork)上运行的 Web 服务器。我计划从 prefork 迁移到 worker(fcgi)。问题是我无法一次迁移所有服务器,因此在短时间内(几天之内)它们中的一些会使用 fcgi,而一些会使用 modphp。我今天测试了会话是否能在这两类服务器(使用 fcgi 的测试服务器和使用 mod_php 的真实服务器)之间工作,看起来不行,当我的代理(基本 nginx)将我从使用 fcgi 的 ws 重定向到使用 mod_php 的 ws 时,我被注销了。托管在这些服务器上的应用程序是一个经过少量修改的 magento(核心上没有任何修改)。如果我移除代理,一切都很完美,我可以从一个节点切换到另一个节点,而会话是一样的。

nginx 中有什么可能导致这种情况吗?以下是 nginx 配置的一部分:

 proxy_ignore_headers "Cache-Control" "Expires";

    proxy_cache_valid  200 302 60m;

    proxy_redirect     off;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_max_temp_file_size 0;

    client_max_body_size       100m;
    client_body_buffer_size    128k;

    proxy_connect_timeout      600000;
    proxy_send_timeout         600000;
    proxy_read_timeout         600000;

    proxy_buffer_size          4k;
    proxy_buffers              4 32k;
    proxy_busy_buffers_size    64k;
    proxy_temp_file_write_size 64k;
    proxy_cache_use_stale  error timeout invalid_header updating http_500 http_502 http_503 http_504;

答案1

这不是一个答案,但可能是一个线索。

FCGI 没有 x_forwarded_for。你可以使用以下方法:

proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

但它肯定会影响会话/cookie 管理。我们正在处理可能相关的问题: https://stackoverflow.com/questions/6791446/cakephp-php-user-sessions-swapping-for-a-subset-of-our-customers

相关内容