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

Прокси-сервер для сайтов, которые должны находиться по корневому URL-адресу?

У меня запущены ActiveMQ и Accumulo, у каждого из которых есть собственная веб-консоль. Я бы хотел поставить перед ними apache httpd. Я установил mod_proxy и добавил следующее в /etc/httpd/conf.d/proxy.conf

ProxyPass /activemq http://1.2.3.4:8161
ProxyPassReverse /activemq http://1.2.3.4:8161

ProxyPass /accumulo http://5.6.7.8:50095
ProxyPassReverse /accumulo http://5.6.7.8:50095

Проблема в том, что сайты AMQ и Accumulo не работают / не выглядят должным образом, потому что их HTML пытается загрузить изображения, css, js, используя такие URL-адреса, как <img src="/images/logo.jpg">

Как я могу исправить ошибки при загрузке js / css и т. Д.?

У вас есть несколько вариантов, ни один из которых не идеален:

  • Может быть, вам повезло, и в корне каждого приложения используется только пара неперекрывающихся папок, и вы можете просто добавить несколько директив ProxyPass.

  • Повторно разверните ActiveMQ и Accumulo, чтобы они больше не устанавливались в корень, а во вложенную папку.

  • Используйте поддомены для каждого приложения, такие как activemq.example.com и Acculo.example.com, и направляйте туда пользователей вашего сайта.

то есть что-то вроде:

<VirtualHost *:80>
    ServerName activemq.example.com
    ProxyPass / http://1.2.3.4:8161
    ProxyPassReverse / http://1.2.3.4:8161
</VirtualHost>
  • Фактически вы можете получить apache не только для прокси-запросов к вашим внутренним приложениям, но и для переписывания тела ответа, прежде чем оно будет передано посетителям вашего сайта. (Обычно прокси перезаписывает только заголовки / ответы HTTP). mod_substitute в apache 2.2.

Я не проверял, хорошо ли он сочетается с mod_proxy и может вызвать значительные накладные расходы, но, возможно, работает следующее:

<Location /activemq/>
  ProxyPass http://1.2.3.4:8161
  ProxyPassReverse http://1.2.3.4:8161
  AddOutputFilterByType SUBSTITUTE text/html
  Substitute "s|/images/|/activemq/images/|i" 
</Location>