【发布时间】:2014-06-08 17:49:37
【问题描述】:
我在将 Apache 配置为反向代理时遇到问题,以便我可以从 Tomcat 应用程序的 URL 中删除端口号。我已经阅读了几个教程,但我总是遇到同样的问题:Apache 似乎传递了 HTML,但没有传递底层的编程部分和样式。 (抱歉,这是我能想到的最好的描述。下面的屏幕截图可以说明我的意思)。
下面是我直接通过8080端口访问Tomcat时看到的:
但这是我通过 Apache 转发时看到的:
正如许多教程所建议的那样,我启用了mod_proxy、proxy_http、proxy_html 和其他一些,但没有解决我的问题。这是 Apache 读取的我的虚拟主机文件:
<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 "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
任何帮助将不胜感激。提前致谢。
【问题讨论】:
-
不要更改 httpd 和 Tomcat 之间的上下文路径 - 这为出错的可能性打开了一个世界。它们都是可以修复的,但需要做很多工作。保持简单并在“/music”下重新部署“/subsonic-tomcat”Web 应用程序。然后回来告诉我们哪些有效,哪些无效。
-
就是这样,谢谢!我没有意识到保持上下文路径相同会更容易。