我在将Apache配置为反向代理时遇到问题,以便可以从URL消除到Tomcat应用程序的端口号。我已经看过几本教程,但是我总是遇到相同的问题:Apache似乎传递了HTML,但是没有底层的编程部分和样式。 (对不起,这是我能提供的最好的描述。下面的屏幕截图说明了我的意思)。

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


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


正如许多教程所建议的那样,我启用了mod_proxyproxy_httpproxy_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>


这是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>

我的tomcat server.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>

关于apache - 如何使用Apache作为Tomcat应用程序的代理?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24109040/

10-12 00:13
查看更多