Ich versuche derzeit, Nginx so einzurichten, dass alle meine statischen Dateien bereitgestellt werden. Da sie überhaupt nicht sehr häufig geändert werden, möchte ich das Modul gzip_static verwenden, damit ich Kopien meiner Dateien vorab gzipen kann, um CPU-Zeit zu sparen und eine bessere Komprimierung zu ermöglichen.
Ich habe Nginx mit kompiliert --with-http_gzip_static_module
und so eingerichtet, dass es meine statischen Dateien bedient, bisher keine Probleme. Ich wollte testen und sicherstellen, dass das statische Zippen tatsächlich funktioniert, also habe ich zwei Dateien erstellt test.txt
und test.txt.gz
. In der ersten Zeile jeder Datei wird angegeben, ob sie komprimiert wurden, und dann gibt es eine neue Zeile und 256 zufällige Zeichen (zwischen den beiden Dateien unterschiedlich).
Ich habe gelesen, dass die Änderungszeit der Datei und des gezippten Gegenstücks gleich sein sollte, und habe beide der folgenden Methoden ausprobiert:
touch test.*
touch -r test.txt test.txt.gx
Auf meinem lokalen Computer teste ich mit Curl:
curl $URL/test.txt
Das funktioniert gut, ich bekomme die Version zurück, die ich nicht vorkomprimiert habe, aber wenn ich das mache:
curl -H "Accept-Encoding: gzip" $URL/test.txt | gunzip
Ich auch bekommen die Version zurück ich nicht Vorkompressionsposition tat. Ich habe versucht, gzip off
meine Einstellungen nginx.conf
vorzunehmen, aber es macht keinen Unterschied. Ich habe auch neu kompilierte Nginx mit --without-http_gzip_module
und das scheint keinen Unterschied entweder zu machen, Nginx noch gzips Dinge selbst im Fluge.
Ich bin ziemlich neu bei Nginx, aber hier bin ich wirklich ratlos.
Hier ist die Ausgabe von ./nginx -V
built by gcc 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC)
configure arguments: --sbin-path=$SOMEPATH/nginx --prefix=$SOMEPATH --user=$ME --group=$MYGROUP --with-http_gzip_static_module --without-http_gzip_module
Und hier ist meine nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
error_log logs/error.log;
pid logs/nginx.pid;
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
gzip_static on;
sendfile on;
keepalive_timeout 65;
access_log logs/access.log;
server {
listen XXXX;
server_name foo.bar.com;
location / {
root html;
}
error_page 404 404.html;
error_page 500 502 503 504 50x.html;
}
}
Jede Hilfe wird sehr geschätzt!