问题描述
我想使用Puppet部署和配置Apache。我看到有一个Apache模块(https://forge.puppet.com/puppetlabs/apache),但是我不清楚如何设置Apache服务器来处理大量的位置/ ProxyPass对,格式如下:
<IfModule mod_proxy.c>
<Location /foo>
ProxyPass http://fooserve.llnl.gov:8080/foo
ProxyPassReverse http://fooserve.llnl.gov:8080/foo
</Location>
<Location /bar>
ProxyPass http://barserve.llnl.gov:8080/bar
ProxyPassReverse http://barserve.llnl.gov:8080/bar
</Location>
</IfModule>
我看到了有关虚拟主机的文档,但在我看来这是不同的。我真正想要的是一次传递一大堆位置/ URI对。这可能吗?
解决方法
您可以将directories
与proxy_pass
一起使用,如下所示:
apache::vhost { 'x.y.z':
...
directories => [
{
path => '/foo',provider => 'location',proxy_pass => [ { url => 'http://fooserve.llnl.gov:8080/foo' } ],},{
path => '/bar',proxy_pass => [ { url => 'http://fooserve.llnl.gov:8080/bar' } ],],...
}
这将生成您所描述的Apache配置文件。另一种方法是在VirtualHost级别拥有所有ProxyPass
指令,如下所示:
<IfModule mod_proxy.c>
ProxyPass /foo http://fooserve.llnl.gov:8080/foo
ProxyPassReverse /foo http://fooserve.llnl.gov:8080/foo
ProxyPass /bar http://barserve.llnl.gov:8080/bar
ProxyPassReverse /bar http://barserve.llnl.gov:8080/bar
</IfModule>
在人偶清单中,就像这样:
apache::vhost { 'x.y.z':
...
proxy_pass => [
{
path => '/foo',url => 'http://http://fooserve.llnl.gov:8080/foo',{
path => '/bar',url => 'http://http://fooserve.llnl.gov:8080/bar',...
}