reverseproxy 从单个虚拟主机连接多个后端服务器

reverseproxy 从单个虚拟主机连接多个后端服务器

我有一个 apache http 服务器,它充当代理来连接到后端应用服务器。

例如机器A(https)->机器B(反向代理)->机械网(应用程序)

这里 MachineA(Public_lb)端口 9002 与 MachineB(内部 apache)端口 7777 映射。

在后台,我运行着不同的应用服务器

例如

  1. 机器C1->Weblogic
  2. MachineC2-> Tomcat
  3. MachineC3 -> NodeJS
  4. MachineC4 -> Flask

这里有一个服务器名称(MachineA:public_facing_lb) 和端口(9002)。以下是我在 MachineB(apache 反向代理服务器)中的现有配置,现在它对所有 weblogic 连接都运行良好。但是当我为其他应用程序添加代理时,它就无法正常工作。

我在这里做错了什么?

LoadModule weblogic_module   "/u01/oracle/ohssa/ohs/modules/mod_wl_ohs.so"

RewriteEngine On
    RewriteCond %{HTTPS} on
    RewriteRule ^$ http://%{HTTP_HOST} [L,R]



    <IfModule mod_weblogic.c>
       NameVirtualHost *:7777
      <VirtualHost *:7777>
        ServerName https://public_facing_lb:9002
        RewriteEngine       On
        RewriteOptions inherit
        RewriteRule ^/$ /pod/reactaphome [PT]
        Debug ALL
        MatchExpression /
        DebugConfigInfo ON
        WLLogFile /var/log/httpd/wlproxy-qa.log
        KeepAliveEnabled ON
        KeepAliveSecs  15
        WLProxySSLPassThrough ON
        ProxyPreserveHost On


     <Location /pod/reactapp1>
       ProxyPass  http://nodejssrv1:1337
       ProxyPassReverse  http://nodejssrv1:1337
     </Location>

     <Location /pod/flaskapp1>
       ProxyPass  http://flasksrv1:8080
       ProxyPassReverse  http://flasksrv1:8080
     </Location>

     <Location /pod/tomcatapp1>
       ProxyPass  http://tomcatsrv1:8080
       ProxyPassReverse  http://tomcatsrv1:8080
     </Location>

     <Location /pod/console>
        SetHandler weblogic-handler
        WebLogicHost wlssrv1
        WeblogicPort 7001
        WLSRequest On
        ProxyPass  http://wlssrv1:7001/console
        ProxyPassReverse http://wlssrv1:7001/console
     </Location>
        SetHandler weblogic-handler
        WebLogicHost wlssrv1
        WeblogicPort 7001
        ProxyPass /pod/wlsapp1 http://wlssrv1:7001/wlsapp1
        ProxyPassReverse /pod/wlsapp1 http://wlssrv1:7001/wlsapp1
        ProxyPass /pod/wlsapp2 http://wlssrv1:7001/wlsapp2
        ProxyPassReverse /pod/wlsapp2 http://wlssrv1:7001/wlsapp2
        ProxyPass /pod/wlsapp3 http://wlssrv1:7001/wlsapp3
        ProxyPassReverse /pod/wlsapp3 http://wlssrv1:7001/wlsapp3

        ProxyPass /wlsapphome/global http://wlssrv1:7001/resources/getGlobalAppsList
        ProxyPassReverse /wlsapphome/global http://wlssrv1:7001/resources/getGlobalAppsList
        ProxyPass /wlsapphome http://wlssrv1:7001/resources/getAppsList
        ProxyPassReverse /wlsapphome http://wlssrv1:7001/resources/getAppsList

     </VirtualHost>
    </IfModule> 

我可能犯了一个错误,将其他应用程序配置放入 weblogic if 模块中。如果我创建多个虚拟主机,则在任何时候都只有第一个虚拟主机有效。

我是否需要加载模块以便 tomcat、nodejs 和 flask 进行通信,因为页面加载会损坏。就像用于 weblogic 的 mod_wl_ohs 一样?

答案1

<Location>没有正确关闭,因此 Apache 可能没有正确启动。使用</Location>关闭。

对于“在任何时间点只有第一个虚拟主机有效”的问题,请确保指定:

 NameVirtualHost *:7777

 <VirtualHost *:7777>

并将ServerName每个虚拟主机中的更改为不同的(例如appname.example.com)。

相关内容