V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jiafaner
V2EX  ›  问与答

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

  •  
  •   jiafaner · 2018-12-18 18:06:46 +08:00 · 476 次点击
    这是一个创建于 2159 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们项目组内部上了一套 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 来做代理

    谢啦

    5 条回复    2018-12-18 23:44:27 +08:00
    jiafaner
        1
    jiafaner  
    OP
       2018-12-18 18:42:46 +08:00
    尝试添加了一条 Rewrite 规则,可是也不对,因为我把 /trac 给 rewrite 掉,好像不能解决上面的问题,反而导致 Perl 的系统不能运行了
    shiny
        2
    shiny  
       2018-12-18 18:44:25 +08:00
    可以确定是可以这样代理的,而且里面文件的路径也可以被修改掉,以前这么干过。
    jiafaner
        3
    jiafaner  
    OP
       2018-12-18 18:47:48 +08:00
    @shiny 请教,怎么实现呢或者搜索哪些关键词,我搜索的是 apache 反向代理, 没找到相关信息
    shiny
        4
    shiny  
       2018-12-18 18:58:28 +08:00
    @jiafaner 遇到问题可以先看官方文档。Apache 文档里 ProxyPassReverse 里提到,修改代理的 HTML 内容可以使用 mod_proxy_html,你可以试试。
    时间太久了具体哪个模块我已经记不清了。
    jiafaner
        5
    jiafaner  
    OP
       2018-12-18 23:44:27 +08:00
    请问必须通过 proxy_html 修改 HTML 内容吗
    有没有更现成的解决方案
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2842 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 13:51 · PVG 21:51 · LAX 05:51 · JFK 08:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.