Nginx 中的 http_cookie 和 cookie_name 有什么区别?

Ash*_*hoo 3 nginx reverse-proxy cookies http-cookie amazon-elb

我想在 Nginx 中添加远程 ip 作为 Cookie,以便它可以传递给 AWS 负载均衡器以获得负载均衡器的粘性。

location / {
     proxy_set_header Cookie "$http_cookie; ip=$remote_addr";
     proxy_pass http://app_upstream;
}
Run Code Online (Sandbox Code Playgroud)

我使用这些来设置 cookie,但 AWS ELB 不接受它作为粘性。由于此服务器用作 iframe,因此我无法使用 ELB 生成的 cookie 进行负载平衡,以防 Safari/iOs 默认阻止 3rd 方 cookie。

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

Gru*_*mpy 5

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

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

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

add_header Set-Cookie foo=bar;
Run Code Online (Sandbox Code Playgroud)