У меня 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>