Redirect 使用Apache2.x和Tomcat6.x将子域映射到Servlet上下文
我已经在Tomcat 6.x下的Redirect 使用Apache2.x和Tomcat6.x将子域映射到Servlet上下文,redirect,subdomain,tomcat6,mod-proxy,apache2.2,Redirect,Subdomain,Tomcat6,Mod Proxy,Apache2.2,我已经在Tomcat 6.x下的http://dev.mycompany.com:8080/archiva可以访问应用程序和所有内容,但我想从子域archiva.mycompany.com访问它 我让Apache 2.x在端口80上运行,并使用虚拟主机和mod_代理从其他子域路由到我在这台机器上运行的其他各种服务 现在我想创建一个子域archiva.dev.mycompany.com,并将其指向dev.mycompany.com:8080/archiva 我想不出我需要在我的ProxyPass和
http://dev.mycompany.com:8080/archiva
可以访问应用程序和所有内容,但我想从子域archiva.mycompany.com
访问它
我让Apache 2.x在端口80
上运行,并使用虚拟主机和mod_代理从其他子域路由到我在这台机器上运行的其他各种服务
现在我想创建一个子域archiva.dev.mycompany.com
,并将其指向dev.mycompany.com:8080/archiva
我想不出我需要在我的ProxyPass
和ProxyPassReverse
中放入什么才能使它像我希望的那样工作
我尝试了以下方法,它所做的只是一遍又一遍地向URL添加/archiva
<VirtualHost *:80>
ServerAdmin me@mycompany.com
ServerName archiva.dev.mycompany.com
ProxyPreserveHost On
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
ProxyPass / http://dev.mycompany.com:8080/archiva
ProxyPassReverse / http://dev.mycompany.com:8080/archiva
</VirtualHost>
我又一次在谷歌上找到了所有我能找到的东西,并尝试了以下方法:
ProxyPass / ajp://dev.mycompany.com:8080/archiva/
ProxyPassReverse / http://dev.mycompany.com:8080/archiva/
现在我刚从Winstone Servlet引擎中得到一个404错误代码,我知道我已经接近了
谁能告诉我,我需要什么魔法咒语才能让它按我的愿望运行呢?我也有同样的问题 必须做的事情:
- 将archiva重新配置为具有archiva 在/而不是/archiva上运行/
- 在中配置反向代理 apache2配置
ProxyRequests Off
ProxyPreserveHost On
<VirtualHost [ip]>
ServerName repo.[domain]
ProxyPass / http://[ip]:8082/
ProxyPassReverse / http://[ip]:8082/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
ProxyRequests关闭
代理主机
ServerName repo.[域]
ProxyPass/http://[ip]:8082/
ProxyPassReverse/http://[ip]:8082/
命令拒绝,允许
通融
关于conf/jetty.xml配置:
ProxyRequests Off
ProxyPreserveHost On
<VirtualHost [ip]>
ServerName repo.[domain]
ProxyPass / http://[ip]:8082/
ProxyPassReverse / http://[ip]:8082/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
-删除此项:
<!--
<Call class="org.mortbay.jetty.webapp.WebAppContext" name="addWebApplications">
<Arg><Ref id="Contexts"/></Arg>
<Arg>./apps</Arg>
<Arg>org/mortbay/jetty/webapp/webdefault.xml</Arg>
<Arg><Ref id="plusConfig"/></Arg>
<Arg type="boolean">True</Arg>
<Arg type="boolean">False</Arg>
</Call>
-->
+添加以下内容:
<New class="org.mortbay.jetty.webapp.WebAppContext">
<Arg><Ref id="Contexts"/></Arg>
<Arg>./apps/archiva</Arg>
<Arg>/</Arg>
<Set name="configurationClasses"><Ref id="plusConfig"/></Set>
</New>
/应用程序/阿奇瓦
/
您得到的原因:
HTTP状态404-/archivaarchiva/
是因为您没有以/结束ProxyPass最后一条路径,但以一结束了第一条路径
ProxyPass/
ProxyPass和ProxyPassReverse都应以结尾/
改写为(注意结尾/):
ProxyPass/
见:http://httpd.apache.org/docs/2.2/mod/mod#u proxy.html#proxypass
如果第一个参数以尾随/结尾,则第二个参数也应以尾随/结尾,反之亦然。否则,对后端的请求可能会错过一些必要的斜杠,无法提供预期的结果。这个问题应该在中或顺便问一下,我只想“对于我的主archiva URL,如果有一天我决定切换回Artifactory或archiva以外的其他应用程序,为了能够拥有完全相同的URL。是的,我有一个想法,将其作为根应用程序,但我有多个应用程序,对于我想成为子域的每个应用程序,Archiva、Hudson等,都必须有一个单独的servlet容器实例,这似乎很荒谬。在我这边,出于各种原因,这就是我正在做的:我在一个单独的servlet容器中运行每个应用程序,如果可用,通常通过Jetty(例如Hudson、Archiva、sonar)。为什么?因为在同一个tomcat容器(permgen space等)中运行所有这些服务时,我遇到了很多内存问题,现在使用分离的服务更简单了,每个服务都运行在通过Apache隐藏的特定端口上,仅此而已:这将在/而不是/archiva/下映射archiva web应用程序。重新阅读我的问题,您将看到我尝试了两种方法,但两种方法都不正确。阅读理解,不要只是浏览问题