0

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

我希望将一个子域映射到 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配置中的任何错误?

4

2 回答 2

0

看起来你的 httpd.conf 配置很好。

在那里,代理会将请求“app.myDomain.com”重定向到“locahost:8080”

但是您的tomcat托管在“www.app.myDomain.com”上的问题

将 server.xml 标记中的“www.app.myDomain.com”更改为“localhost”可能会解决您的问题。

于 2017-02-28T13:32:49.413 回答
0

我找到了解决方案。

修改了 ProxyPass 和 ProxyPassReverse 如下

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

现在我可以通过 http://www.a.myDomain.com/ 访问 php 应用程序,通过 http://www.app.myDomain.com/访问 Java 应用程序

于 2017-03-03T11:06:02.383 回答