concat: HTTP-Konkatenationsmodul für NGINX
Installation
Sie können dieses Modul in jeder RHEL-basierten Distribution installieren, einschließlich, aber nicht beschränkt auf:
- RedHat Enterprise Linux 7, 8, 9 und 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 und 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
Aktivieren Sie das Modul, indem Sie Folgendes an den Anfang von /etc/nginx/nginx.conf hinzufügen:
load_module modules/ngx_http_concat_module.so;
Dieses Dokument beschreibt nginx-module-concat v1.2.3, veröffentlicht am 15. Januar 2020.
Einführung
Dies ist ein Modul, das mit tengine verteilt wird, einer Distribution von Nginx, die von der E-Commerce/Auktionsseite Taobao.com verwendet wird. Diese Distribution enthält einige Module, die neu in der Nginx-Welt sind. Das ngx_http_concat-Modul ist eines davon.
Das Modul ist inspiriert von Apaches modconcat. Es folgt demselben Muster zur Aktivierung der Konkatenation. Es verwendet zwei ?, so wie hier:
http://example.com/??style1.css,style2.css,foo/style3.css
Wenn ein drittes ? vorhanden ist, wird es als Versionszeichenfolge behandelt. So:
http://example.com/??style1.css,style2.css,foo/style3.css?v=102234
Konfigurationsbeispiel
location /static/css/ {
concat on;
concat_max_files 20;
}
location /static/js/ {
concat on;
concat_max_files 30;
}
Modul-Direktiven
concat on | off
Standard: concat off
Kontext: http, server, location
Aktiviert die Konkatenation in einem bestimmten Kontext.
concat_types MIME-Typen
Standard: concat_types: text/css application/x-javascript
Kontext: http, server, location
Definiert die MIME-Typen, die in einem bestimmten Kontext konkatenierbar sind.
concat_unique on | off
Standard: concat_unique on
Kontext: http, server, location
Definiert, ob nur Dateien eines bestimmten MIME-Typs konkatenierbar sind oder ob mehrere MIME-Typen konkateniert werden können. Wenn auf off gesetzt, können in einem bestimmten Kontext JavaScript- und CSS-Dateien konkateniert werden.
Beachten Sie, dass der Standardwert on ist, was bedeutet, dass nur Dateien mit demselben MIME-Typ in einem bestimmten Kontext konkateniert werden. Wenn Sie also CSS und JS haben, können Sie nicht so etwas tun:
http://example.com/static/??foo.css,bar/foobaz.js
Um das zu tun, müssen Sie concat_unique off setzen. Dies gilt für alle anderen Dateitypen, die Sie durch Hinzufügen des jeweiligen MIME-Typs über concat_types konkatenieren möchten.
concat_max_files number
Standard: concat_max_files 10
Kontext: http, server, location
Definiert die maximale Anzahl von Dateien, die in einem bestimmten Kontext konkateniert werden können. Beachten Sie, dass eine bestimmte URI nicht größer sein kann als die Seitengröße Ihrer Plattform. Unter Linux können Sie die Seitengröße ermitteln, indem Sie Folgendes ausführen:
getconf PAGESIZE
In der Regel beträgt sie 4k. Wenn Sie also versuchen, viele Dateien in einem bestimmten Kontext zu konkatenieren, könnten Sie auf diese Grenze stoßen. Um diese vom Betriebssystem definierte Einschränkung zu überwinden, müssen Sie die large_client_header_buffers-Direktive verwenden. Setzen Sie sie auf den Wert, den Sie benötigen.
concat_delimiter: string
Standard: KEINE
Kontext: http, server, location
Definiert den Trennzeichen zwischen zwei Dateien. Wenn die Konfiguration concat_delimiter "\n" ist, würde ein '\n' zwischen 1.js und 2.js eingefügt werden, wenn http://example.com/??1.js,2.js aufgerufen wird.
concat_ignore_file_error: on | off
Standard: off
Kontext: http, server, location
Ob 404 und 403 ignoriert werden sollen oder nicht.
Tagging von Releases
Perusio pflegt ein getaggtes Release unter http://github.com/alibaba/nginx-http-concat in Synchronisation mit den Tengine-Releases. Verweisen Sie dort auf die neuesten nicht eingecheckten Tags.
Weitere Tengine-Module auf GitHub
-
footer filter: Ermöglicht das Hinzufügen zusätzlicher Daten (Markup oder nicht) am Ende eines Anfragekörpers. Es ist praktisch für Dinge wie das Hinzufügen von Zeitstempeln oder anderen verschiedenen Inhalten, ohne Ihre Anwendung anpassen zu müssen.
-
http slice: Ermöglicht das Bereitstellen einer Datei in Teilen. Eine Art umgekehrter Byte-Bereich. Nützlich für die Bereitstellung großer Dateien, ohne das Netzwerk zu überlasten.
Weitere Builds
-
Wie zu Beginn erwähnt, ist dieses Modul Teil der
tengineNginx-Distribution. Daher möchten Sie sich möglicherweise etwas Arbeit ersparen und es einfach von Grund auf neu mittengineanstelle des offiziellen Nginx-Quellcodes erstellen. -
Wenn Sie ein hochaktuelles Nginx-Paket (aus den Entwickler-Releases) für Debian maßgeschneidert möchten, könnten Sie an Perusios HA/HP debian Nginx-Paket mit integrierter Unterstützung für nginx-http-concat interessiert sein. Anweisungen zur Verwendung des Repositories und zur Integration des Pakets in eine stabile Distributionsinstallation sind verfügbar.
GitHub
Sie finden zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-concat.