从 nginx 代理的机器设置 cookie 时出现问题

从 nginx 代理的机器设置 cookie 时出现问题

对于我的一个项目,我需要连接一长串机器,这些机器本质上是代理彼此的 HTTP 请求。它就像这样:

Web 客户端 - A - B/C - D

当浏览器发出请求时,它首先经过位于用户本地机器上的薄 PHP 代理层,其目的是解决跨域请求等复杂问题。它代理到机器 B - 只是一个 nginx 实例,它重写 URL 并代理到 C。C 进行一些必要的修改,然后代理到 D,获取响应并将其返回到 Web 客户端。D 是一个无法触及的远程服务 API。

我在机器 C 上设置会话 cookie 时遇到问题,这一直追溯到原始请求。虽然可以设置 cookie,但当有新请求时,它在 Chrome 网络检查器中不可见,当我尝试从显然不存在的 cookie 中获取值时,节点 C 返回空指针异常。

我认为,这可以归结为调整 nginx 代理请求的方式。

答案1

检查 C 中 server {} 块中的 nginx 配置中是否有以下设置:

    proxy_pass_header  Set-Cookie;
    proxy_pass_header  P3P;

这足以传递 cookie。

相关内容