引用和转义
HAProxy 的配置文件也包含了和其他编程语言中类似的引用、转义系统。配置文件支持三种类型:
- 用反斜杠来转义
- 用双引号来弱引用
- 用单引号来强引用如果要在字符串里加入空格,则需要在空格前加一个反斜杠来转义或引用一个空格。如果要插入一个反斜杠,可以通过两个反斜杠来转义或强引用一个反斜杠。
举例,使用前置的反斜杠来转义字符:
\
:转义一个空格,表明不是一个普通分隔符#
:转义一个井号,表明不是一行注释\
:转义一个反斜杠\'
:转义一个单引号,表明不是一个强引用\"
:转义一个双引号,表明不是一个弱引用通过两个双引号来表明弱引用,使用弱引用可以防止:'
:把单引号当作强引用#
:把井号当作注释标识使用弱引用时允许插入变量。如果想在双引号括起来的字符串中插入一个“$”符号,则你需要在前面加一个反斜杠来转义(“$”),不过这个做法在双引号外就无效了。
你可以在双引号中进行字符转义,而在单引号括起来的强引用中则不可行,强引用在引用正则表达式时效率很高。
引用和转义会在内存中进行,允许进行级联。
# 以下的执行效果都是相同的:
log-format %{+Q}o\ %t\ %s\ %{-Q}r
log-format "%{+Q}o %t %s %{-Q}r"
log-format '%{+Q}o %t %s %{-Q}r'
log-format "%{+Q}o %t"' %s %{-Q}r'
log-format "%{+Q}o %t"' %s'\ %{-Q}r
# 以下的执行效果都是相同的:
reqrep "^([^\ :]*)\ /static/(.*)" \1\ /\2
reqrep "^([^ :]*)\ /static/(.*)" '\1 /\2'
reqrep "^([^ :]*)\ /static/(.*)" "\1 /\2"
reqrep "^([^ :]*)\ /static/(.*)" "\1\ /\2"