Combinaison de règles nginx pour les fichiers / répertoires cachés

Je mets en place le certificate de cryptage pour mon site Web et j’ai un petit problème pour accéder aux fichiers de challenge ACME en raison de l’une de mes règles de localisation. Fondamentalement, j’ai une règle pour refuser l’access aux fichiers cachés le long de quelques autres dont j’ai besoin pour la protection des fichiers de données système qui sont disponibles sur ce domaine virtuel. Voici ma règle qui bloque l’access aux fichiers cachés:

location ~ ^/(?:\.|data|config|db_structure\.xml){ deny all; } 

Et la règle pour accéder aux fichiers de challenge ACME est la suivante:

 location /.well-known/acme-challenge/ { alias /var/www/challenges/; try_files $uri =404; } 

Je voudrais combiner ces deux règles que nginx ne refuserait pas les demandes de défis ACME. J’essayais de placer la règle pour les défis ACME au-dessus et au-dessous de la règle des fichiers cachés, mais cela ne fonctionne pas dans les deux cas. J’ai aussi apporté quelques modifications aux deux règles, mais je ne pouvais pas le faire fonctionner comme prévu. Je serais vraiment reconnaissant pour toute aide avec ce problème.

Utilisez le modificateur ^~ , ce qui fait que le bloc d’emplacement de préfixe est prioritaire sur tout bloc d’emplacement d’expression régulière au même niveau.

Par exemple:

 location ^~ /.well-known/acme-challenge/ { ... } 

Ce qui précède est toujours un bloc d’emplacement de préfixe. Voir ce document pour plus de détails.