我的Apache和Tomcatconfiguration有问题。 我有一个Apache实例作为Tomcat的代理。 Tomcat服务于两个虚拟主机。 当一个Apache虚拟机指向Tomcat中的特定虚拟机时,就会出现问题。 我可以在我的configuration文件中显示:
/ etc / hosts中:
127.0.0.1 localhost 127.0.0.1 my-pages
/etc/apache/sites-enabled/my-pages.tld:
<VirtualHost *:80> RewriteEngine on ServerAdmin [email protected] ServerName www.my-pages.tld ServerAlias my-pages.tld ProxyPass / http://my-pages:9082/ ProxyPassReverse / http://my-pages:9082/ # Logs ErrorLog /usr/local/tomcat2/logs/error.log CustomLog /usr/local/tomcat2/logs/access.log common LogLevel debug </VirtualHost> <Proxy *> Order deny,allow Allow from all Deny from all </Proxy> ProxyRequests Off ProxyPreserveHost Off
$ {CATALINA_HOME} /conf/server.xml
... <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" URIEncoding="UTF-8" /> <Connector port="9082" proxyPort="80" proxyName="my-pages" /> ... <Host name="my-pages" appBase="my-pages" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="envelon-web" /> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="my-pages_access_" suffix=".log" pattern="common" resolveHosts="false"/> </Host>
当我运行这个configuration时,www.my-pages.tld页面指向Tomcat中的默认虚拟主机(而不是“我的页面”虚拟)。 这很奇怪,因为当我在本地机器上(而不是在服务器上)设置相同的configuration时,它工作正常。 另外,当我在Tomcat虚拟(my-pages.tld而不是我的网页)中使用域名时,它也可以工作(我不想使用这个configuration,因为我想从外面“隐藏”Tomcat)。
你知道我错了什么地方,或者什么可以解决这个问题? 谢谢你的回应!
圣马特奥
我终于解决了这个问题。 问题是ProxyPreserveHost是在外部定义的 指示。 在Apache中定义了更多的虚拟主机,其中一些有* ProxyPreserveHost On“什么影响了其他主机。
我把ProxyPreserveHost移到了 什么解决了
一般来说,有两个解决scheme:
mod_proxy_http mod_proxy_ajp 要么为虚拟主机工作正常,哪些select是一个偏好或其他要求的问题超出了这里所问。