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

Как передать секрет в rewriterule в протокол AJP

У меня есть сервер Apache под управлением 2.4.6, Tomcat 8.5.33 под управлением lucee.

У нас есть правила перезаписи, которые прокси к AJP на порту 8009.

ProxyPassReverse / ajp://localhost:8009/ timeout=3600
RewriteEngine On

# Rewrite sitemap
RewriteRule ^/sitemap\.txt$ ajp://localhost:8009/sitemap/index.cfm?format=txt [P]
RewriteRule ^/sitemap\.xml$ ajp://localhost:8009/sitemap/index.cfm [P]

Мне нужно реализовать секрет, и я могу настроить его в server.xml без проблем, но с трудом выясняю, как я передаю секрет через правило перезаписи ???

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" maxThreads="400" requiredSecret="PasswordGoesHere!" />

У кого-нибудь есть идея, как я могу передать секрет ???

Спасибо Грант

К сожалению, вы не можете этого сделать, если не обновитесь до более поздней версии Apache2, которая поддерживает секретный флаг в mod_proxy_ajp, и даже тогда я не совсем понимаю, как передать флаг с помощью RewriteRule.

У меня есть машины с Debian 9, Apache2 2.4.25-3 + deb9u9 и Tomcat8 8.5.54-0 + deb9u. В списке ошибок Debian была указана ошибка (см. https://www.mail-archive.com/debian-bugs-rc@lists.debian.org/msg561495.html), но это было закрыто, как и предполагалось - они не собираются переносить патч на 2.4.25, поэтому с вашим 2.4.6 вам определенно не повезло с тем, чтобы заставить эту комбинацию работать с секретным набором.

Единственное решение проблемы - установить secretRequired = "false" в конфигурации коннектора вашего Tomcat server.xml.

С помощью mod_proxy_ajp (ср. https://httpd.apache.org/docs/trunk/mod/mod_proxy_ajp.html) вы просто добавляете «? secret = XXX» к перезаписанному пути директивы ProxyPass. Я никогда не использовал rewriterule для обращения к Tomcat.

Предостережение:? Secret 0x0C String Поддерживается с версии 2.4.42.