Zum Inhalt

trim: Filter, der Leerzeichen und Kommentare aus HTML-Antworten entfernt

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-trim
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-trim

Aktivieren Sie das Modul, indem Sie Folgendes an den Anfang von /etc/nginx/nginx.conf hinzufügen:

load_module modules/ngx_http_trim_filter_module.so;

Dieses Dokument beschreibt nginx-module-trim v0.1.0, veröffentlicht am 27. Juni 2024.


Das ngx_http_trim_filter-Modul ist ein Filter, der eine Antwort modifiziert, indem es unnötige Leerzeichen (Leerzeichen, Tabs, Zeilenumbrüche) und Kommentare aus HTML (einschließlich Inline-JavaScript und CSS) entfernt. Das Trim-Modul analysiert HTML mit einer Zustandsmaschine.

Beispielkonfiguration

location / {
    trim on;
    trim_js on;
    trim_css on;
}

Direktiven

trim on | off

Standard: trim off

Kontext: http, server, location

Aktivieren oder deaktivieren Sie das Trim-Modul für reines HTML.
Dieses Modul behält einige Inhalte unverändert, falls sie von den Tags pre, textarea, script und style umschlossen sind, sowie IE/SSI/ESI-Kommentare.
Der Parameterwert kann Variablen enthalten.
Beispiel:

set $flag "off";
if ($condition) {
    set $flag "on";
}
trim $flag;


trim_js on | off

Standard: trim_js off

Kontext: http, server, location

Aktivieren oder deaktivieren Sie das Trim-Modul für Inline-JavaScript.
Der Parameterwert kann ebenfalls Variablen enthalten.

trim_css on | off

Standard: trim_css off

Kontext: http, server, location

Aktivieren oder deaktivieren Sie das Trim-Modul für Inline-CSS.
Der Parameterwert kann ebenfalls Variablen enthalten.

trim_types MIME-Typen

Standard: trim_types: text/html

Kontext: http, server, location

Aktivieren Sie das Trim-Modul für die angegebenen MIME-Typen zusätzlich zu "text/html". Antworten mit dem Typ “text/html” werden immer verarbeitet.

Debug

Das Trim-Modul wird deaktiviert, wenn die eingehende Anfrage den Parameter http_trim=off in der URL hat.
z.B. http://www.xxx.com/index.html?http_trim=off

Beispiel

original:

<!DOCTYPE html>
<textarea  >
   trim
        module
</textarea  >
<!--remove all-->
<!--[if IE]> trim module <![endif]-->
<!--[if !IE ]>--> trim module  <!--<![endif]-->
<!--# ssi-->
<!--esi-->
<pre    style  =
    "color:   blue"  >Welcome    to    nginx!</pre  >
<script type="text/javascript">
/***  muitl comment 
                   ***/
//// single comment
str.replace(/     /,"hello");
</script>
<style   type="text/css"  >
/*** css comment
                 ! ***/
body
{
  font-size:  20px ;
  line-height: 150% ;
}
</style>

result:

<!DOCTYPE html>
<textarea>
   trim  
        module
</textarea>
<!--[if IE]> trim module <![endif]-->
<!--[if !IE ]>--> trim module  <!--<![endif]-->
<!--# ssi-->
<!--esi-->
<pre style="color:   blue">Welcome    to    nginx!</pre>
<script type="text/javascript">str.replace(/     /,"hello");</script>
<style type="text/css">body{font-size:20px;line-height:150%;}</style>

Trim-Regel

HTML

Leerzeichen
  • Entfernen Sie '\r'.
  • Ersetzen Sie '\t' durch ein Leerzeichen.
  • Ersetzen Sie mehrere Leerzeichen durch ein einzelnes Leerzeichen.
  • Ersetzen Sie mehrere '\n' durch ein einzelnes '\n'.
  • Ersetzen Sie mehrere '\n' und '\t' in Tags durch ein einzelnes Leerzeichen.
  • Trimmen Sie keine in Anführungszeichen gesetzten Zeichenfolgen in Tags.
  • Trimmen Sie die Inhalte, die von den Tags pre, textarea, script und style umschlossen sind, nicht.
Kommentar
  • Entfernen Sie HTML-Kommentare (<!-- -->).
  • Trimmen Sie keine IE/SSI/ESI-Kommentare.
    IE-Kommentar: <!--[if <![endif]-->
    SSI-Kommentar: <!--# -->
    ESI-Kommentar: <!--esi -->

JavaScript

Inhalte, die von <script type="text/javascript"> oder <script> umschlossen sind, werden als JavaScript identifiziert.

Leerzeichen
  • Entfernen Sie '\r'.
  • Entfernen Sie '\t', '\n' und Leerzeichen, die hinter '(', ',', '=', ':', '[', '!', '&', '|', '?', ';', '>', '~', '*', '{' stehen.
  • Ersetzen Sie mehrere Leerzeichen durch ein einzelnes Leerzeichen.
  • Trimmen Sie keine in Anführungszeichen gesetzten Zeichenfolgen und regulären Ausdrucksliterale.
Kommentar
  • Entfernen Sie Einzelkommentare. //
  • Entfernen Sie Mehrfachkommentare. /* */

CSS

Inhalte, die von <style type="text/css"> oder <style> umschlossen sind, werden als CSS identifiziert.

Leerzeichen
  • Entfernen Sie '\r'.
  • Entfernen Sie '\t', '\n' und Leerzeichen, die um ';', '>', '{', '}', ':', ',' stehen.
  • Ersetzen Sie mehrere '\n' und Leerzeichen durch ein einzelnes Leerzeichen.
  • Trimmen Sie keine in Anführungszeichen gesetzten Zeichenfolgen.
Kommentar
  • Entfernen Sie CSS-Kommentare (/* */).
  • Entfernen Sie keine Kindselektoren und IE5/Mac-Hack-Kommentare.
    Kindselektor-Hack: html>/**/body p{color:blue}
    IE5/Mac-Hack: /*\*/.selector{color:khaki}/**/

GitHub

Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-trim.