Haproxy多行配置

9

haproxy.cfg 文件中,是否可以将配置参数拆分到多行中?

示例

当前方式

frontend
     https-in bind :443 ssl strict-sni crt </path/to/cert1.pem> crt </path/to/cert2.pem> crt </path/to/cert3.pem> ...

理想

frontend 
    https-in bind :443 ssl strict-sni
        crt </path/to/cert1.pem>
        crt </path/to/cert2.pem>
        crt </path/to/cert3.pem>
        ...

尝试理想化时发生错误

$ /usr/sbin/haproxy -c -V -f /etc/haproxy/haproxy.cfg
[ALERT] 343/210133 (25646) : parsing [/etc/haproxy/haproxy.cfg:45] : unknown keyword 'crt' in 'frontend' section
[ALERT] 343/210133 (25646) : Error(s) found in configuration file : /etc/haproxy/haproxy.cfg
[ALERT] 343/210133 (25646) : Fatal errors found in configuration.

当您分割行时,遇到了什么问题? - Jeroen Heier
@JeroenHeier 我遇到了这个错误: [ALERT] 343/210133 (25646) :解析[/etc/haproxy/haproxy.cfg:45] :在“frontend”部分中出现未知关键字“crt” - beaver
(编辑)在问题中添加了configtest输出。 - beaver
你是如何生成配置文件的?如果可以的话,你可以在生成代码中使用变量或类似的方式来填充,以便更轻松地编写配置。例如,我们通过一个 chef cookbook 生成配置,因此不会直接在 haproxy.cfg 中设置任何内容,而是通过变量来设置。 - jmoney
你可以使用 crt-list 文件名来指定所有证书的路径,这样会更加清晰。 - Venkata Dorisala
2个回答

6
你不能在haproxy.cfg中使用多行语法。
请查看文件格式文档:https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#2.1 更新:
感谢Venky的评论,我发现还有一个选项可以使用,它提供了多行pem文件引用的选项。https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#5.1-crt-list




改进后的配置将是:
frontend 
    https-in bind :443 ssl strict-sni
    crt-list </path/to/list.txt>
        ...

文件list.txt

</path/to/cert1.pem>
</path/to/cert2.pem>
</path/to/cert3.pem>

-1
不,你已经知道:
不支持参数在新行上继续。



如果是关于长行可读性的问题,也许还有另一种解决方法:
使用来缩短>(将它们放在同一个目录中)
https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#crt-base



会议的样子将会是这样的(还不太好):

global
   crt-base /etc/haproxy/crt_dir
   ...

...

frontend
     https-in bind :443 ssl strict-sni crt cert1.pem crt cert2.pem crt cert3.pem ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接