A resposta exata é "nunca". Você pode citar ou \
retirar alguns caracteres especiais como "" ou ";" em strings (caracteres que tornariam o significado de uma declaração ambígua), então
add_header X-MyHeader "Test String;";
funcionaria como
add_header X-MyHeader Test\ String\;;
Na realidade: basta usar aspas :)
Edit: Como algumas pessoas gostam de nitpick: A lista não necessariamente completa de caracteres que podem tornar uma declaração ambígua está de acordo com o meu entendimento da nginx
sintaxe de configuração:
<space> " ' { } ; $ \
e pode ser necessário escapar $
e\
até em cadeias citadas para evitar expansão variável.
Infelizmente, não consigo encontrar uma lista completa e autorizada desses caracteres nos documentos.