When do you have to use quotes in Nginx configuration?
Solution 1:
The exact answer is "never". You can either quote or \
-escape some special characters like " " or ";" in strings (characters that would make the meaning of a statement ambiguous), so
add_header X-MyHeader "Test String;";
would work like
add_header X-MyHeader Test\ String\;;
In reality: Just use quotes :)
Edit: As some people love to nitpick: The not necessarily complete list of characters that can make a statement ambiguous is according to my understanding of the nginx
config syntax:
<space> " ' { } ; $ \
and it might be necessary to escape $
and \
even in quoted strings to avoid variable expansion.
Unfortunately, I can't find a complete and authoritative list of such characters in the docs.
Solution 2:
Quotes are required for values which are containing space(s) and/or some other special characters, otherwise nginx
will not recognize them. In your current example quotes make no difference, but anyway quoting values is a good practice/rule of thumb
Solution 3:
One snippet from the documentation for 'if':
If a regular expression includes the “}” or “;” characters, the whole expressions should be enclosed in single or double quotes.
There is also mention of escaping the source (left-side match) values in a map:
If a source value matches one of the names of special parameters described below, it should be prefixed with the “\” symbol...
- default value ...
- hostnames ...
- include file ...
- volatile