Apache mod_proxy后面的RabbitMQ没有parsing深层链接

我有RabbitMQ在Apache mod_proxy后面运行,所以我可以通过端口80访问Webpipe理界面:

<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> 

这似乎工作,但是,当我例如去队列页面,我点击列出的队列之一,我得到一个未find页面和一个像这样的URL:

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

连接,频道等相同的事情。我似乎只能够访问顶部页面,但更深层的东西似乎导致未find。

在Apache mod_proxy后面configurationRabbitMQ的正确方法是什么?

首先,您需要停止解码apache2.4的path(%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>