Ubuntu – Apache proxy to forward guacamole

apache-2.2mod-proxyUbuntu

I'm running a Ubuntu 13.04 64-bit server, on which I have some headless VirtualBox VMs running. In the past I have just forwarded the ports to access the VMs manually, but I want to use Guacamole to consolidate things. I let apache act as a proxy for just about every service on my server, and configs like these:

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyRequests Off
    ServerName dynmap.address.net
    ServerAlias dynmap.address.org
    ProxyPass / http://localhost:8123/
    ProxyPassReverse / http://localhost:8123/
</VirtualHost>

work just fine, but this config for guacamole (which is based on instructions from http://guac-dev.org/doc/gug/installing-guacamole.html) does not seem to work:

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyRequests Off
    ServerName rdp.address.net
    ServerAlias rdp.address.org

    ProxyPass / ajp://localhost:8009/guacamole/ max=20 flushpackets=on
    ProxyPassReverse / ajp://localhost:8009/guacamole/
    ProxyPassReverseCookiePath /guacamole /
</VirtualHost>

Upon accessing the ServerName, I get a generic "500 Internal Server Error", and /var/log/apache2/error.log just adds this line:

[warn] proxy: No protocol handler was valid for the URL /. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

My googling thus far says this means that the proxy modules aren't loaded, but I've confirmed that proxy, proxy_http, and proxy_html are all loaded.

EDIT: Realized I had the wrong port on ProxyPassReverse, but that did not resolve the issue.

Best Answer

From the documentation you provided, it looks like this in your config:

ProxyPass / ajp://localhost:8009/guacamole/ max=20 flushpackets=on
ProxyPassReverse / ajp://localhost:8009/guacamole/

Should actually be this:

ProxyPass ajp://localhost:8009/guacamole/ max=20 flushpackets=on
ProxyPassReverse ajp://localhost:8009/guacamole/

You've got some extra slashes hanging around causing problems.

(Note, This depends on if you are using this inside a VirtualHost or Location tag).