J'utilise nginx pour le serveur de contenu statique. Existe-t-il un moyen de définir les en-têtes d'expiration pour chaque fichier respectant une règle spécifique? Par exemple, puis-je définir l'en-tête Expires pour tous les fichiers portant l'extension ".css"?
96
root
ensemble. Dans ce cas, vous devez ajouter les directives à ce bloc. (Je sais que c'est 2y en retard, mais pour les futurs citoyens)La
location
directiveLa
expires
directivela source
Je n'ai pas assez de réputation pour dire pourquoi la réponse acceptée ferait en sorte que les fichiers ne s'affichent plus, mais je l'ai compris et je voudrais aider!
Version courte:
Assurez-vous de disposer d'un répertoire racine spécifié pour votre bloc d'emplacement sur les images si vous n'en avez pas un global.
Version longue ci-dessous:
Tout d'abord, ma méthode d'implémentation de cette solution était vraiment similaire à cette réponse , où vous écrivez la règle (comme dans la réponse acceptée):
dans un fichier img-cache.conf
et ensuite inclure ce fichier dans votre
server {...}
directive.Mon exemple de somesite.com dans mon dossier sites-available:
De cette façon, vous pouvez ajouter le bloc d’emplacement de mise en cache d’images à plusieurs sites que vous exécutez.
Deuxièmement, je suis dans une situation où mon / var / www / contient deux dossiers que j’autorise en tant que public_html - secure et training. Je dois donc créer des blocs d’emplacement spécifiques dans la directive serveur de mon site en distinguant ces dossiers.
En tant que tel, je n'ai pas de répertoire racine global .
Ainsi, lorsque vous créez des blocs d’emplacement d’image, il se peut que vous ne leur fournissiez pas de répertoire racine dans lequel rechercher les images!
Ma solution était alors de:
la source
.conf
. Le dossier appropriénginx/1.14.0 (Ubuntu)
semble être/etc/nginx/snippets/
.Vous pouvez également définir l'expiration au maximum. Voici la directive que j'utilise pour css et js.
la source
Toutes les solutions mentionnées ci-dessus nieront la possibilité d'avoir différents alias pour différents chemins. De même, afin d’avoir toutes vos différentes expirations de cache au même endroit, vous devez utiliser nginx map de la manière suivante.
...
Off
désactive la mise en cache,epoch
(pour l'époque unix), la ressource est toujours extraite,max
définit la date sur la valeur maximale du navigateur.La ~ image / correspond à tous les types d'image.
Pour plus d'informations sur les cartes nginx, visitez http://nginx.org/en/docs/http/ngx_http_map_module.html .
la source
$sent_http_content_type
est"text/css;charset=UTF-8"
l'expression ci-dessus va échouer.Si vous avez un endroit qui abrite tous vos fichiers statiques, quelque chose comme ça fera l'affaire ...
La réponse acceptée a empêché nginx de trouver aucun de mes fichiers statiques. Vous ne savez pas vraiment pourquoi, mais c'est une alternative simple.
la source
/static
dossier (quel que soit l'emplacement que vous avez défini) à la fin de l'alias (juste après.../files
dans l'exemple).Comme il s’agit d’un très vieux fil de discussion, j’ai trouvé un excellent tutoriel à jour.
Peut-être que vous voulez vérifier
Comment implémenter la mise en cache du navigateur avec le module d’en-tête de Nginx sur Ubuntu 16.04
la source