引用和转义

HAProxy 的配置文件也包含了和其他编程语言中类似的引用、转义系统。配置文件支持三种类型:

  • 用反斜杠来转义
  • 用双引号来弱引用
  • 用单引号来强引用如果要在字符串里加入空格,则需要在空格前加一个反斜杠来转义或引用一个空格。如果要插入一个反斜杠,可以通过两个反斜杠来转义或强引用一个反斜杠。

举例,使用前置的反斜杠来转义字符:

  • \:转义一个空格,表明不是一个普通分隔符
  • #:转义一个井号,表明不是一行注释
  • \:转义一个反斜杠
  • \':转义一个单引号,表明不是一个强引用
  • \":转义一个双引号,表明不是一个弱引用通过两个双引号来表明弱引用,使用弱引用可以防止:

  • :把空格当作参数的分隔符

  • ':把单引号当作强引用
  • #:把井号当作注释标识使用弱引用时允许插入变量。如果想在双引号括起来的字符串中插入一个“$”符号,则你需要在前面加一个反斜杠来转义(“$”),不过这个做法在双引号外就无效了。

你可以在双引号中进行字符转义,而在单引号括起来的强引用中则不可行,强引用在引用正则表达式时效率很高。

引用和转义会在内存中进行,允许进行级联。

  1. # 以下的执行效果都是相同的:
  2. log-format %{+Q}o\ %t\ %s\ %{-Q}r
  3. log-format "%{+Q}o %t %s %{-Q}r"
  4. log-format '%{+Q}o %t %s %{-Q}r'
  5. log-format "%{+Q}o %t"' %s %{-Q}r'
  6. log-format "%{+Q}o %t"' %s'\ %{-Q}r
  7. # 以下的执行效果都是相同的:
  8. reqrep "^([^\ :]*)\ /static/(.*)" \1\ /\2
  9. reqrep "^([^ :]*)\ /static/(.*)" '\1 /\2'
  10. reqrep "^([^ :]*)\ /static/(.*)" "\1 /\2"
  11. reqrep "^([^ :]*)\ /static/(.*)" "\1\ /\2"