Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Puppet';什么是Apache模块?_Apache_Puppet_Mod Proxy_Proxypass - Fatal编程技术网

如何使用Puppet';什么是Apache模块?

如何使用Puppet';什么是Apache模块?,apache,puppet,mod-proxy,proxypass,Apache,Puppet,Mod Proxy,Proxypass,我想使用Puppet部署和配置Apache。我看到有一个Apache模块(),但我不清楚如何设置Apache服务器来处理大量的location/ProxyPass对,其形式如下: <IfModule mod_proxy.c> <Location /foo> ProxyPass http://fooserve.llnl.gov:8080/foo ProxyPassReverse http://fooserve.llnl.gov

我想使用Puppet部署和配置Apache。我看到有一个Apache模块(),但我不清楚如何设置Apache服务器来处理大量的location/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>

ProxyPasshttp://fooserve.llnl.gov:8080/foo
ProxyPassReversehttp://fooserve.llnl.gov:8080/foo
ProxyPasshttp://barserve.llnl.gov:8080/bar
ProxyPassReversehttp://barserve.llnl.gov:8080/bar

我看到了关于虚拟主机的文档,但在我看来这是不同的。我真正想要的是一次传递一大堆location/URI对。这是可能的吗?

您可以使用
目录
代理通行证
来完成,如下所示:

apache::vhost { 'x.y.z':
...
  directories => [
    {
      path       => '/foo',
      provider   => 'location',
      proxy_pass => [ { url => 'http://fooserve.llnl.gov:8080/foo' } ],
    },
    {
      path       => '/bar',
      provider   => 'location',
      proxy_pass => [ { url => 'http://fooserve.llnl.gov:8080/bar' } ],
    },
  ],
...
}
<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',
    },
  ],
...
}
这将生成您描述的Apache配置文件。另一种方法是让所有的
ProxyPass
指令都处于VirtualHost级别,如下所示:

apache::vhost { 'x.y.z':
...
  directories => [
    {
      path       => '/foo',
      provider   => 'location',
      proxy_pass => [ { url => 'http://fooserve.llnl.gov:8080/foo' } ],
    },
    {
      path       => '/bar',
      provider   => 'location',
      proxy_pass => [ { url => 'http://fooserve.llnl.gov:8080/bar' } ],
    },
  ],
...
}
<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',
    },
  ],
...
}