通过子域代理Apache到Tomcat,使用mod_jk,隐藏url中的路径

bul*_*lly 0 apache subdomain tomcat url-rewriting mod-jk

我在我的Debian服务器上运行Apache和Tomcat,Apache使用mod_jk代理对Tomcat的请求并返回.我在Tomcat中安装了Jenkins.安装工作正常,代理工作也正常.

现在我只是对我的重写规则有问题(我认为).

有的是: ci.<mydomain>.com/jenkins

想要的是: ci.<mydomain>.com

我对Apache中的重写规则没有足够的经验,而且//google也没有帮助我(可能我没有使用正确的关键词).所以任何帮助都表示赞赏.

这是我的设置:
Apache版本:Apache/2.2.16(Debian)
Tomcat版本:Apache Tomcat/7.0.27

我的worker.properties文件看起来像这样:

# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
Run Code Online (Sandbox Code Playgroud)

我的子域/虚拟主机的定义:

<VirtualHost *>
  ServerName ci.<mydomain>.com
  ServerAlias www.ci.<mydomain>.de

  ErrorLog /var/log/apache2/ci_error.log
  LogLevel warn 
  CustomLog /var/log/apache2/ci_access.log combined

  JKMount /jenkins/* worker1
  JKMount /jenkins worker1

  RewriteEngine on
  RewriteRule ^/$ /jenkins/ [R=permanent]
  RewriteRule ^/jenkins/(.*)$ ajp://localhost:8009/jenkins/$1 [P]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

Jenkins只是我希望Tomcat服务的一个应用程序.大多数其他应用程序也将拥有自己的虚拟主机.据我所知,mod_jk的东西,这个工作者应该足够我所有的其他应用程序,但也许我错了.

由于我已经可以通过子域访问Jenkins,我认为(如前所述)只是正确的重写规则.

任何帮助表示赞赏,我很感谢任何建议或暗示:)

小智 6

不确定这是否仍然是一个问题,但它应该是一个简单的解决方案.我做了一些非常相似的事情,这是你应该需要的:

<VirtualHost *>
  ServerName ci.<mydomain>.com
  ServerAlias www.ci.<mydomain>.de

  ErrorLog /var/log/apache2/ci_error.log
  LogLevel warn 
  CustomLog /var/log/apache2/ci_access.log combined

  JKMount /jenkins/* worker1
  JKMount /jenkins worker1

  RewriteEngine On
  RewriteRule  ^/(.*)$   /jenkins/$1 [PT]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)