【发布时间】:2018-10-02 19:42:14
【问题描述】:
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上的cookies丢失了。
奇怪的是,代理之后请求和cookies里面有正确的域:
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 是空的,我该如何读取它们?提前致谢。
【问题讨论】:
-
可能不是最安全的方法,但为什么不将 cookie 添加到您要代理的 URL,然后根据参数重新分配 cookie?
-
@Mark 在代理之前我无法从
main_domain.com读取cookie,因为我有https://new_domain.com/image.jpg类型的URL,它被代理到https://main_domain.com/image.jpg,然后我才希望在里面读取cookies[:uniq_key]应用程序。
标签: ruby-on-rails nginx cookies reverse-proxy