concat: Module de concaténation HTTP pour NGINX
Installation
Vous pouvez installer ce module dans n'importe quelle distribution basée sur RHEL, y compris, mais sans s'y limiter :
- RedHat Enterprise Linux 7, 8, 9 et 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 et Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-concat
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-concat
Activez le module en ajoutant ce qui suit en haut de /etc/nginx/nginx.conf :
load_module modules/ngx_http_concat_module.so;
Ce document décrit nginx-module-concat v1.2.3 publié le 15 janvier 2020.
Introduction
C'est un module qui est distribué avec
tengine, qui est une distribution de
Nginx utilisée par le site de commerce électronique/enchères
Taobao.com. Cette distribution
contient certains modules qui sont nouveaux sur la scène Nginx. Le
module ngx_http_concat en fait partie.
Le module est inspiré par le
modconcat d'Apache. Il suit le même
schéma pour activer la concaténation. Il utilise deux ?, comme ceci :
http://example.com/??style1.css,style2.css,foo/style3.css
Si un troisième ? est présent, il est traité comme une chaîne de version. Comme ceci :
http://example.com/??style1.css,style2.css,foo/style3.css?v=102234
Exemple de configuration
location /static/css/ {
concat on;
concat_max_files 20;
}
location /static/js/ {
concat on;
concat_max_files 30;
}
Directives du module
concat on | off
par défaut : concat off
contexte : http, server, location
Il active la concaténation dans un contexte donné.
concat_types types MIME
par défaut : concat_types: text/css application/x-javascript
contexte : http, server, location
Définit les types MIME qui peuvent être concaténés dans un contexte donné.
concat_unique on | off
par défaut : concat_unique on
contexte : http, server, location
Définit si seuls les fichiers d'un type MIME donné peuvent être concaténés ou si
plusieurs types MIME peuvent être concaténés. Par exemple, s'il est réglé sur off,
alors dans un contexte donné, vous pouvez concaténer des fichiers Javascript et CSS.
Notez que la valeur par défaut est on, ce qui signifie que seuls les fichiers avec le même
type MIME sont concaténés dans un contexte donné. Donc, si vous avez CSS et
JS, vous ne pouvez pas faire quelque chose comme ceci :
http://example.com/static/??foo.css,bar/foobaz.js
Pour ce faire, vous devez définir concat_unique off. Cela s'applique
à tout autre type de fichiers que vous décidez de concaténer en ajoutant
le type MIME respectif via concat_types.
concat_max_files number
par défaut : concat_max_files 10
contexte : http, server, location
Définit le nombre maximum de fichiers qui peuvent être concaténés dans un contexte donné. Notez qu'un URI donné ne peut pas être plus grand que la taille de page de votre plateforme. Sur Linux, vous pouvez obtenir la taille de page en émettant :
getconf PAGESIZE
Généralement, c'est 4k. Donc, si vous essayez de concaténer beaucoup de fichiers ensemble dans
un contexte donné, vous pourriez atteindre cette limite. Pour surmonter cette limitation définie par le système d'exploitation, vous devez utiliser
la directive large_client_header_buffers. Réglez-la sur la valeur dont vous avez besoin.
concat_delimiter : chaîne
par défaut : AUCUN
contexte : http, server, location
Définit le délimiteur entre deux fichiers. Si la configuration est concat_delimiter "\n", un '\n' serait inséré entre 1.js et 2.js lors de la visite de http://example.com/??1.js,2.js
concat_ignore_file_error : on | off
par défaut : off
contexte : http, server, location
Indique s'il faut ignorer les erreurs 404 et 403 ou non.
Taguer les versions
Perusio maintient une version taguée à http://github.com/alibaba/nginx-http-concat en synchronisation avec les versions de Tengine. Référez-vous à cela pour les derniers tags non engagés.
Autres modules tengine sur GitHub
-
footer filter : permet d'ajouter des données supplémentaires (marquage ou non) à la fin d'un corps de requête. C'est pratique pour des choses comme ajouter des horodatages ou d'autres éléments divers sans avoir à modifier votre application.
-
http slice : permet de servir un fichier par tranches. Une sorte de plage d'octets inversée. Utile pour servir de gros fichiers sans saturer le réseau.
Autres versions
-
Comme mentionné au début, ce module fait partie de la
tenginedistribution Nginx. Donc, vous voudrez peut-être vous éviter du travail et simplement le construire à partir de zéro en utilisanttengineau lieu de la source officielle de Nginx. -
Si vous souhaitez un package Nginx à la pointe (des versions de développement) pour Debian sur mesure, alors vous pourriez être intéressé par le HA/HP debian Nginx package avec support intégré pour nginx-http-concat. Des instructions pour utiliser le dépôt et faire en sorte que le package fonctionne harmonieusement dans une installation de distribution stable sont fournies.
GitHub
Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-concat.