Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Apache作为Tomcat应用程序的代理?_Apache_Jsp_Tomcat_Ubuntu - Fatal编程技术网

如何使用Apache作为Tomcat应用程序的代理?

如何使用Apache作为Tomcat应用程序的代理?,apache,jsp,tomcat,ubuntu,Apache,Jsp,Tomcat,Ubuntu,我在将Apache配置为反向代理时遇到了一个问题,因此我无法从Tomcat应用程序的URL中删除端口号。我已经阅读了好几篇教程,但最后总是遇到同样的问题:Apache似乎传递HTML,但没有底层编程部分和样式。(对不起,这是我能想到的最好的描述。下面的截图说明了我的意思) 以下是我通过8080端口直接访问Tomcat时看到的内容: 但这是我通过Apache转发时看到的: 正如许多教程所建议的那样,我已经启用了mod_proxy、proxy_http、proxy_html,以及其他一些功能,但

我在将Apache配置为反向代理时遇到了一个问题,因此我无法从Tomcat应用程序的URL中删除端口号。我已经阅读了好几篇教程,但最后总是遇到同样的问题:Apache似乎传递HTML,但没有底层编程部分和样式。(对不起,这是我能想到的最好的描述。下面的截图说明了我的意思)

以下是我通过8080端口直接访问Tomcat时看到的内容:

但这是我通过Apache转发时看到的:

正如许多教程所建议的那样,我已经启用了
mod_proxy
proxy_http
proxy_html
,以及其他一些功能,但没有解决我的问题。以下是Apache读取的我的virtualhost文件:

<VirtualHost *:80>
    ServerAdmin XXXXX@XXX.COM
    ServerName www.compastround.com
    DocumentRoot /home/anthony/Public/

    ErrorLog /var/log/apache2/music.compastround.com-error.log

    CustomLog /var/log/apache2/music.compastround.com-access.log combined
    ServerSignature Off

    ProxyPass /music/ http://localhost:8080/subsonic-tomcat/
    ProxyPassReverse /music/ http://localhost:8080/subsonic-tomcat/

    <Directory /home/anthony/Public/>
        Order allow,deny
        Allow from all
        Require all granted
        Options FollowSymLinks
        AllowOverride All
        Options -Multiviews
    </Directory>
</VirtualHost>

服务器管理员XXXXX@XXX.COM
服务器名www.compastround.com
DocumentRoot/home/anthony/Public/
ErrorLog/var/log/apache2/music.compastround.com-error.log
CustomLog/var/log/apache2/music.compastround.com-access.log组合
服务器签名关闭
代理通行证/音乐/http://localhost:8080/subsonic-雄猫/
ProxyPassReverse/音乐/http://localhost:8080/subsonic-雄猫/
命令允许,拒绝
通融
要求所有授权
选项如下符号链接
允许超越所有
选项-多视图
下面是Tomcat的server.xml:

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
    <Listener className="org.apache.catalina.core.JasperListener" />
    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
    <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

    <GlobalNamingResources>
        <Resource name="UserDatabase" auth="Container"
                            type="org.apache.catalina.UserDatabase"
                            description="User database that can be updated and saved"
                            factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
                            pathname="conf/tomcat-users.xml" />
    </GlobalNamingResources>

    <Service name="Catalina">

        <Connector port="8080" protocol="HTTP/1.1"
                             connectionTimeout="20000"
                             URIEncoding="UTF-8"
                             redirectPort="8443" />

        <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               URIEncoding="UTF-8"
               proxyName="www.compastround.com"
               proxyPort="80" />

        <Engine name="Catalina" defaultHost="localhost">

            <Realm className="org.apache.catalina.realm.LockOutRealm">
                <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                             resourceName="UserDatabase"/>
            </Realm>

            <Host name="localhost"  appBase="webapps"
                        unpackWARs="true" autoDeploy="true">

                <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" />

            </Host>
        </Engine>
    </Service>
</Server>

任何帮助都将不胜感激。提前感谢。

我的httpd vhosts.conf::

<VirtualHost *:80> 
ServerAdmin 974984076@qq.com
ServerName XXXX
ServerAlias localhost 
ProxyPass / balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=Off
ProxyPassReverse / balancer://cluster/ 
ErrorLog "logs/lbtest-error.log"
CustomLog "logs/lbtest-access.log" common
<Proxy balancer://cluster>

BalancerMember ajp://XXX:XXX loadfactor=1 route=tomcat1
BalancerMember ajp://XXX:XXX loadfactor=2 route=tomcat2
</Proxy>

</VirtualHost>

服务器管理员974984076@qq.com
服务器名XXXX
服务器别名本地主机
ProxyPass/balancer://cluster/ stickysession=JSSessionId | JSSessionId nofailover=Off
ProxyPassReverse/balancer://cluster/ 
ErrorLog“logs/lbtest error.log”
CustomLog“logs/lbtest access.log”通用
平衡员ajp://XXX:XXX 负载系数=1路由=tomcat1
平衡员ajp://XXX:XXX 负载系数=2路由=tomcat2
我的tomcat servel.xml

  <Service name="Catalina">


    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>


    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />



    <Engine name="Catalina" defaultHost="localhost"  jvmRoute="tomcat1">

      <Realm className="org.apache.catalina.realm.LockOutRealm">

        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">




        <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" />



      </Host>


      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" 

                 channelSendOptions="8">  

          <Manager className="org.apache.catalina.ha.session.DeltaManager" 

                   expireSessionsOnShutdown="false" 

                   notifyListenersOnReplication="true"/>  



          <Channel className="org.apache.catalina.tribes.group.GroupChannel">  

            <Membership className="org.apache.catalina.tribes.membership.McastService" 

           address="228.0.0.4"                port="45564"   

                        frequency="500" 

                        dropTime="3000"/>  

            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 

                      address="auto" 

                      port="4000"  

                      autoBind="100" 

                      selectorTimeout="5000" 

                      maxThreads="6"/>  



            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">  

              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" />  

            </Sender>  

            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>  

            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>  

         <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>  

          </Channel>  

          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 

                 filter=""/>  

          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>  



          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" 

                    tempDir="/tmp/war-temp/" 

                    deployDir="/tmp/war-deploy/" 

                    watchDir="/tmp/war-listen/" 

                    watchEnabled="false"/>  

          <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>  

          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>  
     </Cluster>



  </Engine>
  </Service>


根据Mark Thomas在评论中的建议,我更改了我的virtualhost文件,以便上下文路径相同,我的问题得到了解决。

不要更改httpd和Tomcat之间的上下文路径-这为出错打开了一个可能性的世界。它们都是可以修复的,但需要大量的工作。保持简单,并在“/音乐”下重新部署“/亚音速tomcat”web应用程序。然后回来告诉我们什么有效,什么无效。就是这样,谢谢!我没有意识到保持上下文路径不变会让它变得更容易。