RabbitMQ por trás do Apache mod_proxy não resolve o link direto

1

Eu tenho o RabbitMQ rodando atrás do mod_proxy do Apache para que eu possa acessar a interface de gerenciamento da web pela porta 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>

Isso parece funcionar, no entanto, quando eu, por exemplo vá para a página Filas e clico em uma das filas listadas Eu recebo uma página Não encontrado e uma URL que se parece com isso:

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

O mesmo vale para conexões, canais, etc. Parece que só consigo acessar as páginas principais, mas qualquer coisa mais profunda parece resultar em um não encontrado.

Qual é a maneira correta de configurar o RabbitMQ por trás do Apache mod_proxy?

    
por Luke 24.10.2014 / 10:17

1 resposta

3

Primeiro, você precisa interromper o apache2.4 das barras de decodificação em seu caminho (% 2F). Para isso, defina

AllowEncodedSlashes NoDecode

E você precisa evitar o escape de caracteres 'perigosos' como '#'. Com mod_rewrite que seria o sinalizador [NE], com mod_proxy set

nocanon

Isso resulta em:

<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>
    
por 14.11.2014 / 11:07