Dokładna odpowiedź brzmi „nigdy”. Możesz zacytować lub \-escape niektóre znaki specjalne, takie jak „” lub „;” w ciągach znaków (znaki, które mogłyby uczynić sens wyrażenia dwuznacznym), więc
add_header X-MyHeader "Test String;";
działałoby jak
add_header X-MyHeader Test\ String\;;
W rzeczywistości: użyj cytatów :)
Edycja: Jak niektórzy ludzie lubią nitpick: niekoniecznie pełna lista znaków, które mogą sprawić, że stwierdzenie będzie dwuznaczne, jest zgodne z moim rozumieniem nginxskładni config:
<space> " ' { } ; $ \
i może być konieczne ucieczka, $a \nawet w ciągach cytowanych, aby uniknąć rozszerzania zmiennej.
Niestety, nie mogę znaleźć pełnej i wiarygodnej listy takich znaków w dokumentacji.
Nie zawsze chodzi o nitpicking. Plik konfiguracyjny może zostać wygenerowany przez oprogramowanie innej firmy. Który może być wyposażony w szablon i zmienne do interpolacji. Oprogramowanie nie może mieć pewności, co mogą zawierać zmienne, dlatego idealnie powinien wiedzieć, jak cytować dowolny ciąg.
x-yuri
5
W przypadku wartości zawierających spacje i / lub niektóre inne znaki specjalne wymagane są cudzysłowy, w przeciwnym razie nginxich nie rozpoznamy. W obecnym przykładzie cytaty nie mają znaczenia, ale i tak cytowanie wartości jest dobrą praktyką / ogólną zasadą
Jaka jest lista znaków specjalnych. Czy jest na to dokumentacja i jak ich uniknąć? Widziałem zarówno pojedyncze, jak i podwójne cytaty w tych samych wierszach ...
W przypadku wartości zawierających spacje i / lub niektóre inne znaki specjalne wymagane są cudzysłowy, w przeciwnym razie
nginx
ich nie rozpoznamy. W obecnym przykładzie cytaty nie mają znaczenia, ale i tak cytowanie wartości jest dobrą praktyką / ogólną zasadąźródło