Nginx 反向代理 Apache2 服务器。因为一些原因,源站域名和反代域名不同。
Nginx 服务器绑定
rproxy.www.example.com ,反代
www.example.comApache 服务器绑定
www.example.com ,用于 host 静态文件,在子目录 files/ 下有若干静态文件。
但是访问
rproxy.www.example.com/files,自动跳转到 www.example.com/files/,而访问 rproxy.www.example.com/files/ (后面多了斜杠)则不会。通过 curl 测试,发现不是 Nginx 的配置问题,而是 Apache 将不带斜杠访问目录 301 跳转到了带斜杠的目录地址。
也就是说,Apache 在默认情况下,会把访问目录的 URL 跳转到 ${PROTOCAL}://${HOST}/${DIR_NAME}/,而不是直接用相对路径跳转(搜了一下,好像用相对路径跳转是不符合 HTTP 规范的)
谷歌了很久,并没有发现好的解决方案,有说关闭自动加斜杠跳转的,但是确实有自动加斜杠的需求;有说在 Nginx 上配置替换网址的,但是个人希望在原站上解决问题;有说在 Apache 上绑定
rproxy.www.example.com (即反代的域名)然后 Nginx 发送对应 Host 的,似乎不失为一个解决方法,但感觉这样有点混乱……
现在请教一下大家,有没有什么好的方法可以解决这个问题?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/574356
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.