2.2. Quoting and escaping
- HAProxy's configuration introduces a quoting and escaping system similar to
- many programming languages. The configuration file supports 3 types: escaping
- with a backslash, weak quoting with double quotes, and strong quoting with
- single quotes.
- If spaces have to be entered in strings, then they must be escaped by preceding
- them by a backslash ('\') or by quoting them. Backslashes also have to be
- escaped by doubling or strong quoting them.
- Escaping is achieved by preceding a special character by a backslash ('\'):
- \ to mark a space and differentiate it from a delimiter
- \# to mark a hash and differentiate it from a comment
- \\ to use a backslash
- \' to use a single quote and differentiate it from strong quoting
- \" to use a double quote and differentiate it from weak quoting
- Weak quoting is achieved by using double quotes (""). Weak quoting prevents
- the interpretation of:
- space as a parameter separator
- ' single quote as a strong quoting delimiter
- # hash as a comment start
- Weak quoting permits the interpretation of variables, if you want to use a non
- -interpreted dollar within a double quoted string, you should escape it with a
- backslash ("\$"), it does not work outside weak quoting.
- Interpretation of escaping and special characters are not prevented by weak
- quoting.
- Strong quoting is achieved by using single quotes (''). Inside single quotes,
- nothing is interpreted, it's the efficient way to quote regexes.
- Quoted and escaped strings are replaced in memory by their interpreted
- equivalent, it allows you to perform concatenation.
Example:
# those are equivalents:
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
# those are equivalents:
reqrep "^([^\ :]*)\ /static/(.*)" \1\ /\2
reqrep "^([^ :]*)\ /static/(.*)" '\1 /\2'
reqrep "^([^ :]*)\ /static/(.*)" "\1 /\2"
reqrep "^([^ :]*)\ /static/(.*)" "\1\ /\2"