jiafaner
V2EX  ›  问与答

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

  •  
  •   jiafaner · Dec 18, 2018 · 843 views
    This topic created in 2730 days ago, the information mentioned may be changed or developed.

    我们项目组内部上了一套 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 replies    2018-12-18 23:44:27 +08:00
    jiafaner
        1
    jiafaner  
    OP
       Dec 18, 2018
    尝试添加了一条 Rewrite 规则,可是也不对,因为我把 /trac 给 rewrite 掉,好像不能解决上面的问题,反而导致 Perl 的系统不能运行了
    shiny
        2
    shiny  
    PRO
       Dec 18, 2018
    可以确定是可以这样代理的,而且里面文件的路径也可以被修改掉,以前这么干过。
    jiafaner
        3
    jiafaner  
    OP
       Dec 18, 2018
    @shiny 请教,怎么实现呢或者搜索哪些关键词,我搜索的是 apache 反向代理, 没找到相关信息
    shiny
        4
    shiny  
    PRO
       Dec 18, 2018
    @jiafaner 遇到问题可以先看官方文档。Apache 文档里 ProxyPassReverse 里提到,修改代理的 HTML 内容可以使用 mod_proxy_html,你可以试试。
    时间太久了具体哪个模块我已经记不清了。
    jiafaner
        5
    jiafaner  
    OP
       Dec 18, 2018
    请问必须通过 proxy_html 修改 HTML 内容吗
    有没有更现成的解决方案
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2596 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 15:59 · PVG 23:59 · LAX 08:59 · JFK 11:59
    ♥ Do have faith in what you're doing.