我们在不同的 Web 服务器前面使用 httpd 和 mod_proxy 作为反向代理。
我们的www
子域名指向反向代理,mod_proxy 从那里引导请求。
我还没能想出一个简洁的方式来表达这一点,所以我只会展示:
如果我们有一个网站http://blah.example.com/my-web-app,我们通常会在反向代理中添加这样的一行:
ProxyPass /my-web-app http://blah.example.com/my-web-app
这样用户就可以访问http://www.example.com/my-web-app
。当请求的路径组件(/my-web-app
在本例中)在反向代理和 Web 服务器上相同时,将自动添加尾部斜杠,就像有人直接访问 一样http://blah.example.com/my-web-app
。
但是,如果路径组件不同,例如:
ProxyPass /my-web-app http://blah.example.com/some-other-path
然后尾部斜线不是得到添加。
这种行为正常吗?是否有一些配置可以解决此问题?
答案1
仔细阅读 Apache httpd 文档中有关 ProxyPass 的部分(http://httpd.apache.org/docs/current/mod/mod_proxy.html)。您可以通过明确指定 ProxyPass 指令的两个参数的尾部 / 来避免此行为
ProxyPass /my-web-app/ http://blah.example.com/some-other-path/