以下是我的清单的片段:
apache::vhost { 'default-http':
port => 80,
serveraliases => ['example.test.com', 'example2.test.com',],
docroot => '/var/www/html',
rewrites => [
{
comment => 'Bounce to https',
rewrite_cond => ['"%{SERVER_PROTOCOL}" "!^HTTP$"'],
rewrite_rule => ['"^/?(.*)" "https://%{HTTP_HOST}/$1" [R=permanent,L]'],
}
],
}
正如您在以下配置中看到的,别名无处可寻:
# Vhost template in module puppetlabs-apache
# Managed by Puppet
# ************************************
<VirtualHost *:80>
ServerName default-http
## Vhost docroot
DocumentRoot "/var/www/html"
## Directories, there should at least be a declaration for /var/www/html
<Directory "/var/www/html">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
## Logging
ErrorLog "/var/log/httpd/default-http_error.log"
ServerSignature Off
CustomLog "/var/log/httpd/default-http_access.log" combined
## Rewrite rules
RewriteEngine On
#Bounce to https
RewriteCond "%{SERVER_PROTOCOL}" "!^HTTP$"
RewriteRule "^/?(.*)" "https://%{HTTP_HOST}/$1" [R=permanent,L]
我猜想我的 serveraliases 行有问题,因为除了该行之外的配置中都显示了其他内容。不幸的是,我没有在日志中看到任何错误来指导我。
我究竟做错了什么?
答案1
为了数组,Puppet 语言风格指南中建议……
为了提高数组和哈希的可读性,将元素分成不同的行几乎总是有益的。
仅当使用单行代码可以提高结构的整体可读性时才使用,例如当代码非常短时。拆分数组和哈希时,它们应该具有:
- 其线上的每个元素,
- 每个新元素行缩进一级,
- 第一行和最后一行仅用于该数据类型的语法。
来自的示例配置虚拟主机看起来像这样:
apache::vhost { 'aliases.example.com':
serveraliases => [
'aliases.example.org',
'aliases.example.net',
],
port => '80',
docroot => '/var/www/aliases',
}
[ '
您的配置中唯一不同的是和之间没有空格', ],
。使用格式化数组的最佳实践可以自动避免这种情况。