繁体   English   中英

NGINX反向代理后的Cookies

[英]Cookies after NGINX reverse proxy

Rails 5.1应用程序。

我的main_domain.com被广告拦截器阻止,因此用户无法使用指向我网站上图片的直接链接。 我决定使用new_domain.com + NGINX反向代理将请求从new_domain.com重定向到main_domain.com并且它可以正常工作。 NGINX配置:

server {
  server_name new_domain.com;

  location / {
      proxy_set_header X-Connecting-IP $remote_addr;
      proxy_pass https://main_domain.com;
  }
}

但是有一个新问题:在反向代理丢失之后main_domain.com上的 cookie。

奇怪的是,代理后请求和cookie中有正确的域名:

pry(main)> request.domain
=> main_domain.com
pry(main)> cookies.request.domain
=> main_domain.com

但是需要键uniq_key是空的:

pry(main)> cookies[:uniq_key]
=> nil

虽然它是之前创建的,但如果我打开main_domain.com ,则在浏览器开发控制台中可见。

为什么cookie是空的,我怎么能读它们? 提前致谢。

(1) 重定向代理之间存在差异。 前者是服务器发出特殊HTTP状态以及新资源位置,浏览器向新位置发出新请求。 所以这里的浏览器会发出两个请求。 后者是您的服务器请求转发给另一台服务器的时候。 从浏览器的角度来看,似乎原始服务器返回响应。

因此,根据您的源代码片段,您正在进行代理

(2)Cookie属于域名。 当浏览器向new_domain.com发出请求时,它不会发送由main_domain.com设置的cookie ,因为浏览器只向new_comain.com发出一个请求,因为您正在进行代理 ,而不是重定向


我想我回答了你的问题“为什么”。 我不知道“如何解决”,因为你的方法有些严重,我不知道可以进行哪些权衡或可以负担得起哪些变化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM