gpt4 book ai didi

apache - 如何使用相对路径正确完成反向代理

转载 作者:行者123 更新时间:2023-12-01 16:03:45 26 4
gpt4 key购买 nike

我有以下设置来屏蔽/重定向带有端口的 url 到代理例如。

VirtualHost *:80>
ServerName psweb1.example.com
ServerAlias psweb1.example.com
ProxyPass /demo1 http://psweb1.example.com:8002/
ProxyPassReverse /demo1 http://psweb1.example:8002/
</VirtualHost>

此设置的问题是重定向不会捕获任何相对路径。

例如psweb1.example.com:8002/main/login/login.jsp 重定向到psweb1.example.com/demo1/main/login/login.jsp

登录后:重定向不遵循 psweb1.example.com/demo1/* 的结构而是尝试返回 psweb1.example.com/*

我如何确保正确的映射始终与所有正确的相对路径保持一致?比如:

psweb1.example.com:8002/main > psweb1.example.com/demo1/main
psweb1.example.com:8002/main/login > psweb1.example.com/demo1/main/login
psweb1.example.com:8002/side/* > psweb1.example.com/demo1/side/*

等等等等

最佳答案

我认为您的问题实际上是绝对 路径。我怀疑相对路径是否正常工作。考虑:

您的浏览器获取页面 psweb.example.com/demo1/main/其中包括 <a href="login">...</a> 形式的链接.当您在浏览器中点击该链接时,浏览器将获取 /demo1/main/login ,这正是您想要的。

现在考虑一个形式为 <a href="/main/login">...</a> 的链接.这是一个绝对 链接。在这种情况下,您的浏览器将获取 psweb.example.com/main/login .

您无法使用 ProxyPass 指令解决此问题,因为它与浏览器和服务器之间的 HTTP 交换无关。这是您的 Web 应用程序生成的 HTML 内容的问题。您通常有几种选择:

  1. 正确配置网络应用程序。许多应用程序都有专门为这种情况设计的某种“基本 URL”设置。

  2. 修复网络应用程序。将代码编辑为 (a) 始终生成相关链接或 (b) 始终在正确的基本 URL 前添加。

  3. 使用 HTML 过滤器,例如 mod_proxy_html ,它作为 Apache 最新版本(我认为是 2.4 及更高版本)的一部分提供,并且作为早期版本的第三方模块提供。

关于apache - 如何使用相对路径正确完成反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31081010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com