web-dev-qa-db-fra.com

Mise en cache du navigateur Nginx à l'aide d'en-têtes HTTP en dehors du bloc serveur / emplacement

Je ne parviens pas à définir les en-têtes d'expiration HTTP pour Nginx en dehors de blocs de serveur spécifiques (puis d'emplacement). Ce que je veux, c'est quelque chose comme ceci:

location ~* \.(png|jpg|jpeg|gif|ico)$ {
    expires 1y;
}

Mais ne pas avoir à le répéter dans chaque bloc de serveur, parce que j'héberge un grand nombre de sites. Je peux le mettre dans chaque bloc de serveur, mais ce n'est pas très sec.

Si j'essaie de mettre cela dans un bloc HTTP ou en dehors de tous les autres blocs, j'obtiens la "directive d'emplacement n'est pas autorisée ici." Il semble que je dois le mettre dans un bloc de serveur, et j'ai un bloc de serveur différent pour chaque hôte virtuel.

Toute aide/clarification serait appréciée.

1
Danny O'Sullivan

Utilisez include.

Créez un nouveau fichier, includes/gfx-expires-header.conf et mettez-y les directives:

location ~* \.(png|jpg|jpeg|gif|ico)$ {
    expires 1y;
}

Ensuite, dans chaque bloc de serveur, vous pouvez simplement mettre include includes/gfx-expires-header.conf.

1
Thaeli