Aller au contenu

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

  1. Comme mentionné au début, ce module fait partie de la tengine distribution Nginx. Donc, vous voudrez peut-être vous éviter du travail et simplement le construire à partir de zéro en utilisant tengine au lieu de la source officielle de Nginx.

  2. 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.