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 的,似乎不失为一个解决方法,但感觉这样有点混乱……
现在请教一下大家,有没有什么好的方法可以解决这个问题?