我有一个 apache http 服务器,它充当代理来连接到后端应用服务器。
例如机器A(https)->机器B(反向代理)->机械网(应用程序)
这里 MachineA(Public_lb)端口 9002 与 MachineB(内部 apache)端口 7777 映射。
在后台,我运行着不同的应用服务器
例如
- 机器C1->Weblogic
- MachineC2-> Tomcat
- MachineC3 -> NodeJS
- 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
)。