如何配置Apache作为J2EE服务器的代理(负载均衡器)?

6
我已经安装了Apache Web服务器作为前端,并在Intranet服务器上安装了J2EE SAP Netweaver应用服务器。如何配置Apache将请求和响应转发到/从J2EE应用服务器。 例如,外部Apache服务器的IP地址是9.20.1.1:80。 内部SAP服务器的地址是192.168.0.1/sap/bc/gui/sap/its/webgui?sap_client=200 我想访问我的SAP应用服务器,例如9.20.1.1/sapserver/sap/bc/gui/sap/its/webgui?sap_client=200
3个回答

4
您提到了负载均衡,因此您想要能够添加更多的应用服务器,并通过单个地址进行服务。我希望它们是无状态的或将会话信息存储在数据库中。您可以使用Apache作为反向代理负载均衡器,使用mod_proxy_balancer。文档在这里
以下是从此链接中添加到 httpd.conf 的示例。
 <Proxy balancer://myclustername>
  # cluster member 1
  BalancerMember http://192.168.0.1:3000 
  BalancerMember http://192.168.0.1:3001

  # cluster member 2, the fastest machine so double the load
  BalancerMember http://192.168.0.11:3000 loadfactor=2
  BalancerMember http://192.168.0.11:3001 loadfactor=2

  # cluster member 3
  BalancerMember http://192.168.0.12:3000
  BalancerMember http://192.168.0.12:3001

  # cluster member 4
  BalancerMember http://192.168.0.13:3000
  BalancerMember http://192.168.0.13:3001
</Proxy>

<VirtualHost *:80>
  ServerAdmin info@meinprof.de
  ServerName www.meinprof.de
  ServerAlias meinprof.de
  ProxyPass / balancer://meinprofcluster/
  ProxyPassReverse / balancer://meinprofcluster/
  ErrorLog /var/log/www/www.meinprof.de/apache_error_log
  CustomLog /var/log/www/www.meinprof.de/apache_access_log combined
</VirtualHost>

2

这经常被错误地称为反向代理。如果你使用搜索引擎搜索“反向代理apache”,你会得到很多好的结果。

一个快速的解决方法是在你的apache.conf文件中添加以下内容:

ProxyPass /sap/ 192.168.0.1/sap/

< Location /sap/ >

    ProxyPassReverse /sap/ 

< /Location >

请参考modrewrite规则和[P]选项。

1
实际上,这是一个反向代理。正向代理是一种将请求进行缓存和过滤的主机。我不知道为什么你会说它被“错误地”称为反向代理。 - MattMcKnight

1

假设您已启用了mod_proxy,那么请在您的sites-available中添加以下内容:

   ProxyRequests Off
   <Location "/sapserver">
        ProxyPass http://192.168.0.1
        ProxyPassReverse http://192.168.0.1
   </Location>

不过要小心,因为这会将您的内部网站暴露给整个互联网。


不太好用。我遇到了图片渲染和页面样式(j2ee应用程序)方面的问题。页面呈现没有图形和css样式。你有什么建议吗? - Vik Gamov
你能否检查一下 J2EE 应用程序是否使用绝对 URL 而不是相对 URL 引用图像和 CSS? - Mark Roddy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接