我已经在Ubuntu 10.04服务器系统上安装了Apache Tomcat和Apache Web服务器。 我基本上遵循这些步骤来configurationmod-jk连接器,现在我的web服务器似乎将所有stream量redirect到Tomcat。
这意味着无论我使用的端口80或8080我服务的Tomcat ROOT目录的内容。 这很好,但我仍然希望能够使用Apache来提供静态和PHP内容(如PHPMyAdmin)。
如果你使用mod_jk,这是一个受欢迎的选项,奥斯卡的答案是正确的。 您需要通过改变如下所示来限制Tomcat处理的内容:
JkMount /* ajp13_worker
…只是你想要通过Tomcat处理的path,例如:
JkMount /*.jsp ajp13_worker JkMount /*.cfc ajp13_worker JkMount /*.cfm ajp13_worker
如果您正在寻找其他选项,也可以使用mod_proxy_http或mod_proxy_ajp。 代理* .jsp / *。cfm / *。cfc请求到Tomcat,我将继续一些快速示例…
如果你想尝试这两个选项,首先启用这两个模块(和任何依赖项),这是非常简单的Ubuntu 10.04 😉
sudo a2enmod proxy_http proxy_ajp sudo /etc/init.d/apache2 restart
我喜欢在Ubuntu的/etc/apache2/conf/httpd.conf中添加我的代理configuration,但是您也可以将它放在一个或多个VirtualHostconfiguration中。
对于任何允许的代理,假设你在同一台服务器上运行Apache和Tomcat,你需要添加一个像这样的指令:
<Proxy *> Allow from 127.0.0.1 </Proxy>
这是一个使用mod_proxy_ajp的configuration:
ProxyPreserveHost On ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ ajp://localhost:8009/$1$2 ProxyPassMatch ^/(.+\.jsp)$ ajp://localhost:8009/$1
显然,正则expression式可以调整以满足您的需求(上述两个ProxyPassMatch指令甚至可以很容易地组合成一个正则expression式)。
为了完成mod_proxy_http,只需更改协议和端口:
ProxyPreserveHost On ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ http://localhost:8080/$1$2 ProxyPassMatch ^/(.+\.jsp)$ http://localhost:8080/$1
如果你想代理特定的主机,也许掩盖了一个上下文path,你可能更喜欢在一个特定的VirtualHost这样的东西:
ProxyPreserveHost Off ProxyPass / http://example.site.com:8080/context/ ProxyPassReverse / http://example.site.com:8080/context/
最后,如果你需要变得奇怪(比如查看一个查询string或者其他可以用RewriteCond / RewriteRule进行的梦想),你甚至可以利用带有代理(P)标志的mod_rewrite代理Tomcat。 你需要启用一个模块,mod_rewrite:
sudo a2enmod rewrite sudo /etc/init.d/apache2 restart
然后,在VirtualHost中,您可以通过以下方式代理CFML请求:
RewriteEngine On RewriteRule ^/(.*\.cf[cm]l?)(/.*)?$ ajp://localhost:8009/$1$2 [P]
正如你所看到的,你可以得到相当有创意:P希望有帮助!
使用JkUnmount你不想被tomcat服务的东西:
JkMount / *你的工作者
JkUnMount /*.php yourworker
JkUnMount /*.png你的工作
JkUnMount /*.jpg你的工作者
等等…(不知道你是否可以这样做:JkUnMount /*.{php|jpg|gif|png|etc ..})
或者,如果你只使用jsp的tomcat尝试:
jkMount /*.jsp工作者