Site icon Mr. 沙先生

用 Puppet 實現 Apache 2.4 X-Forwarded-For 阻擋 Location

加碼上一篇「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 { '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',
    },
  ],
}

 

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 算是有品質的。

 

 

 

 

 

 

Exit mobile version