Apache和Tomcat服务器中的多个站点

时间:2017-02-22 08:40:10

标签: java apache tomcat web-hosting domain-mapping

我有一台centOS机器,在端口80上运行Apache HTTP服务器,在端口8080上运行Apache Tomcat。 PHP应用程序在Http Server上运行,并且在tomcat上运行基于java的应用程序。

我希望将子域映射到Php应用程序,并将另一个子域映射到Java应用程序。

这是我需要的映射。

http://www.a.myDomain.com/  ---   php app  and
http://www.app.myDomain.com/ ----java pp

为实现这一目标,我在配置文件中进行了以下更改。

的httpd.conf

添加了以下行,

LoadModule negotiation_module modules/mod_negotiation.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_http_module modules/mod_proxy_http.so

另外,添加了以下内容

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName app.myDomain.com
    ServerAlias www.app.myDomain.com
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass /  http://localhost:8080/
    ProxyPassReverse /  http://localhost:8080/
</VirtualHost>


<VirtualHost *:80>      
    DocumentRoot /var/www/html/test/
    ServerName a.myDomain.com
    ServerAlias www.a.myDomain.com
</VirtualHost>

Tomcat - Server.xml

    <Host name="www.app.myDomain.com"  appBase="/home/centos/apache-tomcat-8.0.0-RC3/webapps/myApp"
        unpackWARs="true" autoDeploy="true"  xmlValidation="false"
          xmlNamespaceAware="false" >
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

 <Context path="" docBase="/home/centos/apache-tomcat-8.0.0-RC3/webapps/myApp"
               debug="0" reloadable="false"/>

我已经修改了上面的配置文件,现在我可以使用URLS

访问这两个应用程序
http://www.a.myDomain.com/
http://www.app.myDomain.com:8080/

这很好。

但我想在不指定端口

的情况下访问java应用程序

即,应该可以通过

访问Java应用程序
 http://www.app.myDomain.com/
 instead of    http://www.app.myDomain.com:8080/

我在apache conf中添加了反向代理的代码(请参阅httpd conf文件),但它无效。 当我访问网址时

http://www.app.myDomain.com/

我收到以下错误

服务不可用

由于维护停机或容量问题,服务器暂时无法为您的请求提供服务。请稍后再试。

Apache配置中的任何错误?

2 个答案:

答案 0 :(得分:0)

看起来你的httpd.conf配置正常。

在此,代理将重定向请求&#34; app.myDomain.com&#34; to&#34; locahost:8080&#34;

但是tomcat主持的问题是&#34; www.app.myDomain.com&#34;

更改&#34; www.app.myDomain.com&#34;在server.xml中标记为&#34; localhost&#34;可以解决你的问题。

答案 1 :(得分:0)

我找到了解决方案。

修改了ProxyPass和ProxyPassReverse,如下所示

ProxyPass / ajp://localhost:8009/
ProxyPassReverse /  http://localhost:8009/

现在我可以访问php app了 http://www.a.myDomain.com/http://www.app.myDomain.com/

的Java应用程序