Apache 服务器配置问题

2019-06-16 02:19:34 +08:00
 baobao1270
Nginx 反向代理 Apache2 服务器。因为一些原因,源站域名和反代域名不同。

Nginx 服务器绑定 rproxy.www.example.com ,反代 www.example.com

Apache 服务器绑定 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 的,似乎不失为一个解决方法,但感觉这样有点混乱……

现在请教一下大家,有没有什么好的方法可以解决这个问题?
3955 次点击
所在节点    服务器
1 条回复
AngryPanda
2019-06-16 08:27:06 +08:00
试试 ngx_headers_more,改掉 response header

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

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

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

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

© 2021 V2EX