Você precisa analisar com cuidado a ordem dos blocos location
. Esta localização:
location ~ /\. {
deny all;
}
deve corresponder a qualquer URI com um elemento de caminho que comece com .
.
No entanto, é preciso estar acima de qualquer outro bloco de localização de expressão regular. Além disso, qualquer bloco de localização de prefixo usando o modificador ^~
terá precedência.
Veja este documento para detalhes.
Note também: Os blocos de localização da sua pergunta estão errados. O primeiro também corresponderá a index.html
e o segundo perderá o modificador ~
para uma localização regex.