I've seen people use excessive quotes:
add_header 'Access-Control-Allow-Origin' '*';
I've seen people use no quotes:
add_header Access-Control-Allow-Origin *;
Both work fine as far as I know, so when do you actually have to use quotes?
I've seen people use excessive quotes:
add_header 'Access-Control-Allow-Origin' '*';
I've seen people use no quotes:
add_header Access-Control-Allow-Origin *;
Both work fine as far as I know, so when do you actually have to use quotes?
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.
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
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
try_files $uri $uri/ /index.php$request_uri;vstry_files '$uri' '$uri/' '/index.php$request_uri';. In the former, Nginx variables get expanded, in the latter - processed as plain string.'/index.php'$request_uri;might make sense, perhaps, too. Related: https://gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html – Artfaith Sep 12 '22 at 12:42try_files); always thought values are evaluated regardless of quotes as a result. Guess they consider the performance gain to be negligible? – Xen Oct 29 '22 at 21:00$would still need to be escaped explicitly if part of a string. Judging from this behaviour, it seems that there is probably no performance benefit to be had; strings not enclosed in quotes will still end up as strings in memory once processed. Seems that the only real benefit to using quotes is legibility and not having to escape spaces etc. – Xen Oct 29 '22 at 23:05