Назад | Перейти на главную страницу

подстановочные знаки proxy_ajp

Мне нужно настроить apache, чтобы любой site.com/ЧТО-НИБУДЬ/ сервлет /ЧТО-НИБУДЬ переходит через ajp в tomcat, но обычные файлы по-прежнему будут проходить через apache.

Я возился с этим безрезультатно

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

Это работает, направляя все на нашу безопасность кота.

ProxyPass      /       ajp://localhost:8009/

редактировать: Я могу проверить правильность регулярного выражения, но он все еще не отправляет его на прокси-сервер ajp. Я также только что подтвердил, что ProxyPass / ajp: // localhost: 8009 / все еще работает, поэтому я знаю, что ajp хорош, и я знаю, что регулярное выражение хорошее, но почему оно все еще не работает: \

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

Я обычно использую mod_rewrite для таких вещей, что позволяет применять регулярное выражение к входящему URI. Например:

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

Это прокси /kaptcha/view/nnnn к ajp://0.0.0.0:9019/media-webapp/kaptcha/view/nnnn. В [P] в конце - флаг, указывающий, что запрос должен быть проксирован, а не перенаправлен.

Для простоты используйте 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

И так далее.

Это не только упростит ваши конфигурации, но и предоставит вам точную функциональность, которая вам нужна.