我的 Debian 服务器上运行着一个 Apache 和一个 Tomcat,Apache 使用 mod_jk 来代理请求到 Tomcat 并返回。我在 Tomcat 中安装了 Jenkins。安装工作正常,代理也工作。
现在我的重写规则有问题(我认为)。
我拥有的是:
ci.<mydomain>.com/jenkins
我想要的是:
ci.<mydomain>.com
我对 Apache 中的重写规则经验不足,文档/谷歌也没有帮助我(可能我没有使用正确的关键词)。 所以任何帮助表示赞赏。
这是我的设置:
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
我的子域/虚拟主机的定义:
<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>
Jenkins 只是我希望由 Tomcat 提供服务的一个应用程序。大多数其他应用程序也将拥有自己的虚拟主机。就我对 mod_jk 的理解而言,这个 worker 应该足以满足我所有其他应用程序的需求,但也许我错了。
由于我已经可以通过子域访问 Jenkins,我认为(如前所述)只是正确重写规则的问题。
感谢任何帮助,我感谢任何建议或提示:)
最佳答案
不确定这是否仍然是一个问题,但应该很容易解决。我做了一些非常相似的事情,这是你应该需要的:
<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>
关于apache - 通过子域将 Apache 代理到 Tomcat,使用 mod_jk,将路径隐藏在 url 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10931014/