在 Apache 2 后面托管 CUPS 的“正确”方法是什么

在 Apache 2 后面托管 CUPS 的“正确”方法是什么

我尝试过 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)。

相关内容