Nginx 反向代理 解决 Cookie 跨域问题

最近工作中遇到了一个问题,基于Cookie传递实现的两个系统单点登录,在我本地是可行的,但是实际生产环境下,两个系统分别部署在不同服务器上,也没有做域名关联,所以没法通过子域名的形式去传递

Cookie,所以想到了在其中一台机器上代理另一台机器,这样就能解决Cookie的跨域问题,想法是美好的,但是实际操作起来,遇到了不少坎坷,因为对nginx还不是那么熟悉,所以网上查了一堆资料,

例如在 代理location下增加 proxy_cookie_domain、proxy_cookie_path,但是都不太行。

也试过在server里加上header,效果都不太理想。尝试了好久,还是没办法将Cookie传递过去,最后在一位大佬指点下,在location里加上了以下配置,终于可以了

proxy_set_header Host $host:$server_port; # $http_host
proxy_set_header Remote_Addr $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;

 

加上了代理请求头,才会让服务器认为是同一个请求,这样Cookie就会当作同一个域下的,自然也就不存在跨域的问题了。

PS:写文章果然还是得趁着bug刚解决激情犹在的时候写啊,这种事后总结我感觉记录得可能不是特别详细,当然我本身也比较懒,所以草草写了一些,也不知道大伙能不能看懂,不懂的话欢迎留言讨论。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值