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

RabbitMQ за Apache mod_proxy не разрешает глубокую ссылку

У меня RabbitMQ работает за Apache mod_proxy, поэтому я могу получить доступ к интерфейсу веб-управления через порт 80:

<VirtualHost *:80>
    ServerName rabbit.example.com

    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
       Order deny,allow
       Allow from all
    </Proxy>

    ProxyPass / http://localhost:15672/
    ProxyPassReverse / http://localhost:15672/

    <Location />
       Order allow,deny
       Allow from all
    </Location>
</VirtualHost>

Однако это, похоже, работает, когда я, например, перейдите на страницу Очереди, и я щелкну одну из перечисленных очередей. Я получаю страницу Не найдено и URL-адрес, который выглядит примерно так:

http://rabbit.example.com/#/queues/%2F/myqueue

То же самое касается подключений, каналов и т. Д. Мне кажется, что я могу получить доступ только к верхним страницам, но все более глубокое, похоже, приводит к не найденному.

Как правильно настроить RabbitMQ за Apache mod_proxy?

Сначала вам нужно запретить apache2.4 декодировать косые черты на вашем пути (% 2F). Для этого установите

AllowEncodedSlashes NoDecode

И вам нужно предотвратить экранирование «опасных» символов, таких как «#». С mod_rewrite это будет флаг [NE], с установленным mod_proxy

nocanon

Это приводит к:

<VirtualHost *:80>
    ServerName rabbit.example.com

    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
       Order deny,allow
       Allow from all
    </Proxy>

    AllowEncodedSlashes NoDecode
    ProxyPass / http://localhost:15672/ nocanon
    ProxyPassReverse / http://localhost:15672/

    <Location />
       Order allow,deny
       Allow from all
    </Location>
</VirtualHost>