单个域名,反向代理了多个不同网站,如何管理 cookies 混乱的问题?

2019-01-11 14:56:57 +08:00
 find456789

我有个域名 xxx.cc

用 caddy (类似 nginx 的 web 服务器) 反向代理了几个网站 a.com b.com c.com

我希望 当我访问 xxx.cc/a 就反向代理 a.com , 当我访问 xxx.cc/b 就反向代理 b.com

目前我实现了这个功能, 但是当我实际使用的时候,我发现 cookies 会互相冲突

这几个网站,部分 cookie name 是一样的

当我访问 xxx.cc/a 登陆了自己的账号后, 完成了我的操作, 这时候我访问 xxx.cc/b 登陆 b 网站的账号后

再访问 xxx.cc/a, 发现 a 的账号已经退出了, 因为 对应 cookies 被 b 网站给覆盖了

所以我想到了一个可行的办法, 就是 让 a 网站的 cookie 作用域为 /a, b 网站 cookie 的作用域为 /b

但是我不知道如何在 caddy ( nginx )中操作

我在网上搜了很久, 也没有找到解决的办法

所以来这里求助大家

求大神指点

1361 次点击
所在节点    问与答
4 条回复
find456789
2019-01-11 15:40:12 +08:00
自己回答

nginx 可以用 proxy_cookie_path 实现这个

点赞 👍
bluehr
2020-07-31 19:09:33 +08:00
楼主能给个 demo 吗,我配置了几个小时了就是不生效, 反代的几个应用 cookie 都是 /路径,会导致 cookie 覆盖的问题
case 如下,如能帮忙看看,不胜感激!
```
location /p1/{
#proxy_set_header Cookie $http_cookie;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header Host 192.168.100.51:18080;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_pass_request_headers on;
proxy_pass http://192.168.100.51:18080/;
proxy_cookie_path / /p1/;
}
location /p2/{
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host 192.168.100.50:18080;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_pass_request_headers on;
proxy_pass http://192.168.100.50:18080/;
proxy_cookie_path / /p2/;
}
```
find456789
2020-08-01 00:24:37 +08:00
@bluehr

你好,我后来发现自己搞不定,所以就没有弄了 。

现在我的项目是分配在不同域名下的, 也就不会有这个问题了, 也就没有深入研究了
bluehr
2020-08-01 16:36:00 +08:00
@find456789 哈哈好的,我后来似乎把它给整好了,感谢回复!。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/526060

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX