Nginx 中 http_cookie 和 cookie_name 有什么区别?

Nginx 中 http_cookie 和 cookie_name 有什么区别?

我想在 Nginx 中将远程 IP 添加为 Cookie,以便可以将其传递给 AWS 负载均衡器,以实现负载均衡器粘性。

location / {
     proxy_set_header Cookie "$http_cookie; ip=$remote_addr";
     proxy_pass http://app_upstream;
}

我使用这些来设置 cookie,但 AWS ELB 不接受将其作为粘性。由于此服务器用作 iframe,因此在 Safari/iOs 默认阻止第三方 cookie 的情况下,我无法使用 ELB 生成的 cookie 进行负载平衡。

我愿意放弃 nginx 并编写自定义反向代理。

答案1

变量$http_是关于 http 标头的。因此,如果您有 $http_host,它会从标头中获取主机。如果您说的是 $http_cookie,则会获取整个 cookie。

变量$cookie_是关于特定 cookie 的。因此,如果您有 $cookie_foo,那么您将获得名为 foo 的 cookie 的值,该 cookie 可能是 bar。

Cookies 会自动传递,除非它有不同的域或路径,否则您无需对此进行任何操作。如果您尝试添加特定的 cookie,则它将是:

add_header Set-Cookie foo=bar;

相关内容