代码之家  ›  专栏  ›  技术社区  ›  jaknichan

Apache Httpd-如何根据请求url中的路径代理重定向两个虚拟主机?

  •  1
  • jaknichan  · 技术社区  · 8 年前

    我在这里遇到了一个问题,看起来可能很小,但我在配置apache方面的基本知识以及我今天搜索的所有内容并没有让我找到任何令人满意的解决方案。

    目标行为是,默认情况下,httpd将每个请求重定向到节点实例,并将匹配以下结构的请求重定向到远程tomcat:physical\u server\u ip/api/*

        <VirtualHost *:80>
               #Filter on '/api/' path in url for node instance
               ProxyPass /api/ !
               ProxyPass / http://localhost:4200/
               ProxyPassReverse / http://localhost:4200/
               ProxyPreserveHost On
        </VirtualHost>
    
        <VirtualHost *:80>
                # Proxy to remote machine on which tomcat runs and provides    services
                ProxyPass /api/ http://<tomcat_machine_alias>:8080/xd-service/api/
                ProxyPassReverse /api/ http://<tomcat_machine_alias>:8080/xd-service/api/
                ProxyPreserveHost On
        </VirtualHost>
    

    当我通过Apache请求我的节点机器时,我可以看到第一个块(节点实例)的响应,但其他请求(路径以/api/开头的请求)没有。

    在浏览器控制台中,这些请求(用于查询API的请求)似乎没有被apache代理,而是发送到节点实例而不是tomcat。

    我错过了什么?

    1 回复  |  直到 8 年前
        1
  •  0
  •   jaknichan    8 年前

    Dusan Bajic的回答解决了这个问题:两个代理规则集需要合并到一个虚拟主机中,从最具体的到不太具体的排序。