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,scriptundstyleumschlossen 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.