多个网站的反向代理

时间:2018-05-30 18:13:58

标签: apache weblogic reverse-proxy virtualhost httpd.conf

最初,我在网络上安装了两个Weblogic应用服务器,第一个WebLogic on IP地址为192.168.0.201(hostname firstserver.example.com) 和IP地址192.168.0.202上的第二个Weblogic服务器(主机名secondserver.example.com) 我已经在我的oracle虚拟盒上安装了apache服务器(用于配置反向代理以进行测试)

最初,我为一台应用服务器配置了反向代理 我已经像这样配置了反向代理 的httpd.conf

<VirtualHost 127.0.0.1:80>
    ServerName www.firstserver.com
     ServerAlias firstserver.com
     ErrorLog /var/log/httpd/error_log
     TransferLog /var/log/httpd/access_log

     <Location /console/>
    ProxyPass  http://firstserver.example.com:7001/console/ retry=0
    ProxyPassReverse   http://firstserver.example.com:7001/console/
   
     </Location>
</VirtualHost>

当我在浏览器(www.firstserver.com/console /)上输入以下地址时,它完美无缺。

我在主机文件中输入了以下详细信息

    192.168.0.201 firstserver.example.com   firstserver
    192.168.0.202 secondserver.example.com   secondserver
当我尝试反向代理两个应用程序服务器时

我在httpd.conf中尝试了不同的设置,如

Listen 192.168.0.201:80
Listen 192.168.0.202:80
NameVirtualHost 192.168.0.201:80
NameVirtualHost 192.168.0.202:80
<VirtualHost 192.168.0.201:80>
    ServerName www.firstserver.com
     ServerAlias firstserver.com
     ErrorLog /var/log/httpd/error_log
     TransferLog /var/log/httpd/access_log

     <Location /console/>
    ProxyPass  http://firstserver.example.com:7001/console/ retry=0
    ProxyPassReverse   http://firstserver.example.com:7001/console/
    
   
     </Location>
</VirtualHost>
<VirtualHost 192.168.0.202:80>
    ServerName www.secondserver.com
     ServerAlias secondserver.com
     ErrorLog /var/log/httpd/error_log
     TransferLog /var/log/httpd/access_log

     <Location /console/>
    ProxyPass  http://secondserver.com:7001/console/ retry=0
    ProxyPassReverse   http://secondserver.com:7001/console/
    
   
     </Location>
</VirtualHost>

但没有奏效 请建议我更好的解决方案

1 个答案:

答案 0 :(得分:0)

您的apache配置显示您误解了“Listen”和“Servername”指令的含义。这些值应该是解析到Web服务器的值,告诉Apache在哪个IP地址上侦听请求以及如何处理到达“www.webserver.com”的任何HTTP请求。这些不应以任何方式解析为应用程序服务器。

如果您在运行浏览器的计算机的主机文件中添加“[网络服务器的IP地址] www.webserver.com”,则此示例适用于您的示例:

    <VirtualHost *:80>
     ServerName www.webserver.com
     ErrorLog /var/log/httpd/error_log
     TransferLog /var/log/httpd/access_log

     <Location /console/>
         ProxyPass  http://firstserver:7001/console/ 
         ProxyPassReverse   http://firstserver:7001/console/
     </Location>

这是一个NamedVirtualHost示例,如果您在客户端上为您的网络服务器提供了第二个主机文件条目(“www.webserver2.com”):

   <VirtualHost *:80>
     ServerName www.webserver.com
     ErrorLog /var/log/httpd/error_log
     TransferLog /var/log/httpd/access_log

     <Location /console/>
         ProxyPass  http://firstserver:7001/console/ 
         ProxyPassReverse   http://firstserver:7001/console/
     </Location>
   </VirtualHost>

    <VirtualHost *:80>
     ServerName www.webserver2.com
     ErrorLog /var/log/httpd/error_log
     TransferLog /var/log/httpd/access_log

     <Location /console/>
         ProxyPass  http://secondserver:7001/console/ 
         ProxyPassReverse   http://secondserver:7001/console/
     </Location>
   </VirtualHost>

这样,您可以从客户端访问www.webserver.com/console和www.webserver2.com/console