加碼上一篇「Apache 2.4 透過 X-Forwarded-For 阻擋特定 location」的設定,一樣要讓他用 Puppet 來管理,
要寫 Apache 建議大家直接可以用 Github 的「puppetlabs/apache」來寫就好,這邊會直接拿 X-Forwarded-For 來做示範
範例:
範例使用 puppetlabs/apache 的 2.3.0 版本,如果要實現 configuration 像這樣的話:
<VirtualHost *:80>
...
DocumentRoot "/var/www/htdocs"
<Directory "/var/www/htdocs">
Options -Indexes +ExecCGI
AllowOverride All
Require all granted
</Directory>
<Location "/login">
Require env internal
</Location>
SetEnvIf X-Forwarded-For "^10\.\d{1,3}\.\d{1,3}\.\d{1,3}$" internal
</VirtualHost>
- 以 class 的寫法:
class { 'apache': }
apache::vhost { 'example.com':
port => 80,
docroot => '/var/www/htdocs',
docroot_owner => 'www-data',
docroot_group => 'www-data',
setenvif => ['X-Forwarded-For "^10\.\d{1,3}\.\d{1,3}\.\d{1,3}$" internal'],
directories => [
{ 'path' => '/var/www/htdocs',
'provider' => 'directory',
'options' => '-Indexes +ExecCGI',
'require' => 'all granted',
},
{ 'path' => 'login',
'provider' => 'location',
'require' => 'env internal',
},
],
}
- 把 vhost 拉到 hiera 的寫法:
vhosts:
"%{trusted.certname}":
port: 80
docroot: '/var/www/htdocs'
docroot_owner: 'www-data'
docroot_group: 'www-data'
setenvif:
- 'X-Forwarded-For "^10\.\d{1,3}\.\d{1,3}\.\d{1,3}$" internal'
directories:
- path: '/var/www/htdocs'
provider: 'directory'
options: '-Indexes +ExecCGI'
allow_override: 'All'
require: 'all granted'
- path: '/login'
provider: 'location'
require: 'env internal'
提供兩種簡單的寫法,實際可以有更多的變化,以我目前遇到的需求來說,Github 出的 module 算是有品質的。
