Apache2 -> Tomcat 虚拟主机

Posted

技术标签:

【中文标题】Apache2 -> Tomcat 虚拟主机【英文标题】:Apache2 -> Tomcat Virtual Host 【发布时间】:2012-01-20 21:06:00 【问题描述】:

我正在尝试在我的服务器上设置问题跟踪器,运行 apache2。但是,问题跟踪器(youtrack)在 tomcat 中运行,所以我正在尝试设置一个将重定向到 tomcat 服务器的虚拟主机。这就是我所拥有的:

#Tomcat                                                                                                                                                                                                                                                                                        
<VirtualHost *:80>
    ServerName issues.example.ca
    ServerAlias issues.example.*

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass / http://www.example.com:8080/youtrack/
    ProxyPassReverse / http://www.example.com:8080/youtrack/
    ProxyPreserveHost On
    ProxyStatus On
    <Location />
        Order allow,deny
        Allow from all
    </Location>

    ErrorLog logs/issues.example.ca-error_log
    CustomLog logs/issues.example.ca-access_log common

</VirtualHost>

现在,我可以看到 youtrack 登录页面,但没有应用他们的 CSS,我无法登录。我在源代码中四处寻找,结果它在 /youtrack 中查找其所有资源,这显然不存在,因为这意味着它将在http://example.com:8080/youtrack/youtrack 中查找。我将如何摆脱第二条 youtrack 路径?我已经尝试过重写,但我似乎无法完全正确。任何帮助,将不胜感激。谢谢!

编辑:我想像这样重写:

RewriteRule ^.*/youtrack/(.*)$ /$1 [P,L]

该站点可以正常工作,但现在的问题是 URL 显示为 issues.example.com/youtrack/stuff,而我希望它是 issues.example.com/stuff。有什么想法吗?

【问题讨论】:

【参考方案1】:

您需要将运行 YouTrack 的服务器上的 URI 从 /youtrack 更改为 /。 这是实现您需要的唯一方法。

然后,替换 “代理通行证/http://www.example.com:8080/youtrack/” 和 “代理通行证/http://www.example.com:8080/” 等等……

【讨论】:

【参考方案2】:

过去,我们使用 modjk 来桥接 Apache 和 Tomcat。

我多年来没有研究过这个配置,所以也许有一些更新的方法。

【讨论】:

以上是关于Apache2 -> Tomcat 虚拟主机的主要内容,如果未能解决你的问题,请参考以下文章

apache2.2.25+tomcat7.0.47集群方案

centos 配置apache和tomcat共同使用https

Apache2.2 Tomcat7 集群 session共享 [windows]

apache tomcat 503 自定义错误页面

为多个域部署Apache Tomcat的WAR文件

如何开启apache虚拟目录反向代理