proxy_ajp 通配符

proxy_ajp 通配符

我需要设置 apache,以便任何 site.com/任何事物/servlet/任何事物通过 ajp 进入 tomcat,但是常规文件仍然会通过 apache。

我一直在努力解决这个问题,但毫无成果

<LocationMatch "./*/servlet/*">
Order Allow,Deny
Allow from all
ProxyPass ajp://localhost:8009/
ProxyPassReverse /
</LocationMatch>

这有助于将所有内容导向我们的 tomcat 实例。

ProxyPass      /       ajp://localhost:8009/

编辑:我可以验证正则表达式是否正确,但它仍然没有将其发送到代理 ajp。我还重新验证了 ProxyPass / ajp://localhost:8009/ 仍然有效,所以我知道 ajp 很好,我也知道正则表达式很好,但为什么它仍然不起作用:\

RewriteRule ^(.*)/servlet/(.*)$ ajp://localhost:8009/$1 [P]

答案1

我倾向于使用mod_rewrite类似这样的方法,它允许你将正则表达式应用于传入的 URI。例如:

RewriteRule ^/((kaptcha|barcode)/view/(.*))$ ajp://0.0.0.0:9019/media-webapp/$1 [P]

这代理/kaptcha/view/nnnnajp://0.0.0.0:9019/media-webapp/kaptcha/view/nnnn[P]末尾的是一个标志,表示请求将被代理,而不是重定向。

答案2

为了简单起见,使用mod_jk。它允许您“挂载”特定目录,以便您将获得类似以下内容:

LoadModule jk_module modules/mod_jk.so
<IfModule mod_jk.c>
    JKMount       /some_context/*        ajp13
    JKMount       /another_context/*     ajp13
</IfModule>

Alias /images /some/directory/served_by_apache

等等。

这不仅可以简化您的配置,还可以为您提供所需的精确功能。

相关内容