apache 能不能代理内部的系统并修改路径

2018-12-18 18:06:46 +08:00
 jiafaner

我们项目组内部上了一套 Trac,跑在 http://192.168.1.93:8000 这个地址上,是用的 Apache 的虚拟主机,

内网通过管理员这边, 只有一个 192.168.1.90:80 端口对外开放,映射了一个域名,上面已经跑了一套 Apache+Perl 的系统了,用的 Apache 的虚拟主机,现在想要把这个 Trac 代理出去,领导说映射到 192.168.1.90:80/trac

然后我在 192.168.1.90 的机器上添加了下面的内容:

ProxyPreserveHost Off ProxyRequests Off ProxyPass "/trac" "http://192.168.1.93:8000/" ProxyPassReverse "/trac" "http://192.168.1.93:8000/"

在外面访问 xxxx.com/trac 的时候,能够看到 trac 的登录页面,可是不能用啊,因为两个方面的原因,

第一方面,Trac 里面的那些静态文件都是以 /开头的,比如 /chrome/css/trac.min.css,所以在浏览器里的地址就变成了 xxx.com/chrome/css/trac.min.css,而不是 xxx.com/trac/chrome/css/trac.min.css

第二方面,链接也点击不了,因为 Trac 生成的链接也是以 /开头的,所有链接地址变成了和前面的 css 一样的路径

求助这样的 Apache 能实现这样代理吗

不能用其他软件,因为现在 Apache 跑着的这套 Perl 的程序挺重要,不能动,也没人敢随便动,看不懂,所以就要用 Apache 来做代理

谢啦

475 次点击
所在节点    问与答
5 条回复
jiafaner
2018-12-18 18:42:46 +08:00
尝试添加了一条 Rewrite 规则,可是也不对,因为我把 /trac 给 rewrite 掉,好像不能解决上面的问题,反而导致 Perl 的系统不能运行了
shiny
2018-12-18 18:44:25 +08:00
可以确定是可以这样代理的,而且里面文件的路径也可以被修改掉,以前这么干过。
jiafaner
2018-12-18 18:47:48 +08:00
@shiny 请教,怎么实现呢或者搜索哪些关键词,我搜索的是 apache 反向代理, 没找到相关信息
shiny
2018-12-18 18:58:28 +08:00
@jiafaner 遇到问题可以先看官方文档。Apache 文档里 ProxyPassReverse 里提到,修改代理的 HTML 内容可以使用 mod_proxy_html,你可以试试。
时间太久了具体哪个模块我已经记不清了。
jiafaner
2018-12-18 23:44:27 +08:00
请问必须通过 proxy_html 修改 HTML 内容吗
有没有更现成的解决方案

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

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

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

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

© 2021 V2EX