Traefik、Nginx与Django(GUnicorn)双层反向代理配置及路径前缀缺失导致链接失效问题求助
Traefik、Nginx与Django(GUnicorn)双层反向代理配置及路径前缀缺失导致链接失效问题求助
大家好,我目前的服务部署架构是这样的:
publicly available private network __________________________ ______________________________ | Traefik reverse proxy | <--> | nginx <--> Django/GUnicorn | __________________________ ______________________________
简单说下流量走向:Traefik作为公网侧的反向代理,会把类似 https://some.example.com/foo/bar/ 的公网请求转发到私有网络里的 http://<ip-of-nginx>:80/ —— 这里Traefik会自动去掉URL里的foo/bar前缀,同时把HTTPS协议降级成HTTP。
私有网络里的Nginx一方面负责静态文件的分发,另一方面也扮演了内部反向代理的角色,和后端的Django(搭配GUnicorn)服务做请求的转发交互。
现在遇到了一个棘手的问题:当客户端请求 https://some.example.com/foo/bar/baz 时,能正常获取到Django渲染的对应/baz路由的页面,这部分是符合预期的。但页面上所有的内部链接都直接指向 https://some.example.com/…,完全缺失了foo/bar/这个前缀!这些没有前缀的链接根本不在Traefik的转发规则覆盖范围内,所以全部失效了,用户点击后根本访问不到正确的内容。
备注:内容来源于stack exchange,提问作者user3389669
相关产品推荐
相关产品推荐

