我正在运行 Ubuntu 13.04 64 位服务器,上面运行着一些无头 VirtualBox VM。过去我只是转发端口以手动访问 VM,但我想使用 Guacamole 来整合一切。我让 apache 充当服务器上几乎所有服务的代理,配置如下:
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName dynmap.address.net
ServerAlias dynmap.address.org
ProxyPass / http://localhost:8123/
ProxyPassReverse / http://localhost:8123/
</VirtualHost>
工作正常,但这是鳄梨酱的配置(基于来自http://guac-dev.org/doc/gug/installing-guacamole.html)似乎不起作用:
<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>
访问 ServerName 时,我收到一个通用的“500 内部服务器错误”,并且 /var/log/apache2/error.log 只添加了这一行:
[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.
到目前为止,我用谷歌搜索的结果显示这意味着代理模块未加载,但我已经确认 proxy、proxy_http 和 proxy_html 都已加载。
编辑:我意识到 ProxyPassReverse 上的端口是错误的,但这并不能解决问题。
答案1
根据您提供的文档,您的配置如下所示:
ProxyPass / ajp://localhost:8009/guacamole/ max=20 flushpackets=on
ProxyPassReverse / ajp://localhost:8009/guacamole/
实际上应该是这样的:
ProxyPass ajp://localhost:8009/guacamole/ max=20 flushpackets=on
ProxyPassReverse ajp://localhost:8009/guacamole/
一些多余的斜线会造成问题。
(注意,这取决于您是否在 VirtualHost 或 Location 标签内使用它)。