如何使用Apache作为Tomcat应用程序的代理?
我在将Apache配置为反向代理时遇到了一个问题,因此我无法从Tomcat应用程序的URL中删除端口号。我已经阅读了好几篇教程,但最后总是遇到同样的问题:Apache似乎传递HTML,但没有底层编程部分和样式。(对不起,这是我能想到的最好的描述。下面的截图说明了我的意思) 以下是我通过8080端口直接访问Tomcat时看到的内容: 但这是我通过Apache转发时看到的: 正如许多教程所建议的那样,我已经启用了如何使用Apache作为Tomcat应用程序的代理?,apache,jsp,tomcat,ubuntu,Apache,Jsp,Tomcat,Ubuntu,我在将Apache配置为反向代理时遇到了一个问题,因此我无法从Tomcat应用程序的URL中删除端口号。我已经阅读了好几篇教程,但最后总是遇到同样的问题:Apache似乎传递HTML,但没有底层编程部分和样式。(对不起,这是我能想到的最好的描述。下面的截图说明了我的意思) 以下是我通过8080端口直接访问Tomcat时看到的内容: 但这是我通过Apache转发时看到的: 正如许多教程所建议的那样,我已经启用了mod_proxy、proxy_http、proxy_html,以及其他一些功能,但
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 "%r" %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 "%r" %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应用程序。然后回来告诉我们什么有效,什么无效。就是这样,谢谢!我没有意识到保持上下文路径不变会让它变得更容易。