我尝试过 ProxyPass、ProxyPassReverse 和 ProxyHTMLURLMap 的一些组合,但仍然不太成功。我只想通过访问 www.printerhost.com/printers/printername 来访问 CUPS 中的打印机,而不必添加端口 631 或让 CUPS 监听端口 80。
根据要求,以下是配置文件:
LoadModule proxy_html_module modules/mod_proxy_html.so
LoadModule xml2enc_module modules/mod_xml2enc.so
NameVirtualHost *:80
<VirtualHost *:80>
ServerName blah.yours.com
JkMount /* balancer
JkMount /jkmanager jk-status
JkUnMount /cups* balancer
ProxyRequests Off
ProxyPass /cups/ http://localhost:631/
ProxyHTMLURLMap http://localhost:631 /cups
<Location /cups/>
ProxyPassReverse /
ProxyHTMLEnable On
ProxyHTMLURLMap / /cups/
</Location>
</VirtualHost>
答案1
看起来使用简单的 ProxyPass 和 ProxyPassReverse 问题就解决了,但是仅有的当代理“/”时。我猜想将 CUPS 代理到任何其他路径都不起作用。
答案2
我偶然发现了这个网站http://www.wlug.org.nz/ApacheReverseProxy。
他们通过将 mod_proxy 与 mod_proxy_html 结合起来以改变 CUPS 网页内的链接来解决了这个问题。
然而,我个人认为应该以某种方式增强 CUPS 网络界面,也许用 PHP 或类似语言重写,因为当前的网络界面(基于 CGI)在某种程度上不一致(在某些地方我们将相对 URL 作为 admin,而在其他地方则作为 /admin)。