我已经configurationApache Web服务器和Tomcat像这样:
我在apache2 / sites-available中创build了一个新文件,将其命名为“myDomain”,其内容如下:
<VirtualHost *:80> ServerAdmin [email protected] ServerName myDomain.com ServerAlias www.myDomain.com ProxyPass / ajp://localhost:8009 <Proxy *> AllowOverride AuthConfig Order allow,deny Allow from all Options -Indexes </Proxy> </VirtualHost>
启用了mod_proxy和myDomain
a2enmod proxy_ajp a2ensite myDomain
编辑Tomcat的server.xml(引擎标签内)
<Host name="myDomain.com" appBase="webapps/myApp"> <Context path="" docBase="."/> </Host> <Host name="www.myDomain.com" appBase="webapps/myApp"> <Context path="" docBase="."/> </Host>
这很好。 但我不喜欢把静态文件(HTML,图像,video等)放到{tomcat home} / webapps / myApp的子文件夹中,而我想把它们放在apache webserver的根WWW目录的子目录下。 我希望Apache Web服务器能够单独提供这些文件。
我怎么能这样做? 所以所有传入的请求将被转发到Tomcat,除了那些要求一个静态文件。
您可能想要使用ProxyPassMatch 。 你可以像这样使用它:
ProxyPassMatch ^(/.*\.cgi)$ ajp://localhost:8009$1
代理以.CGI结尾的所有请求。 如果您希望代理多个扩展,只需添加更多行或编辑正则expression式。 那么你只需要确保你的VirtualHost被设置为服务其余的图像types。
虽然uesp的答案在技术上是正确的,但我始终build议人们使用Apache mod_jk连接器来通过Apache托pipeJava应用程序服务器。 一般来说,它简化了一切,并允许您安装特定的上下文。 例如,您现在可以使用:
LoadModule jk_module libexec/mod_jk.so JKMount /myapp/* ajp13
它使得转发请求变得更容易,并且使您能够更灵活地使用Apache来托pipe其他资源。