我目前正在尝试设置Nginx来提供我所有的静态文件。由于根本不会经常更改它们,因此我希望我们使用gzip_static模块,以允许我对文件的gzip副本进行预gzip压缩,以节省一些cpu时间并允许更好的压缩。
我用编译了Nginx --with-http_gzip_static_module
并进行了设置,以便它可以为我的静态文件提供服务,到目前为止没有问题。我想测试并确保静态gziping确实可以正常工作,所以我制作了两个文件test.txt
和test.txt.gz
。每个文件的第一行都表明是否压缩了文件,然后有一个换行符和256个随机字符(两个文件之间不同)。
我已经读过文件的修改时间和gzip压缩的对应文件应该相同,并且我尝试了以下两种方法:
touch test.*
touch -r test.txt test.txt.gx
在本地计算机上,我正在测试curl:
curl $URL/test.txt
效果很好,我找回了没有预压缩的版本,但是当我这样做时:
curl -H "Accept-Encoding: gzip" $URL/test.txt | gunzip
我还找回了我没有预压缩的版本。我尝试将设置gzip off
为nginx.conf
,但没有任何区别。我也用Nginx重新编译了Nginx,--without-http_gzip_module
这似乎也没有什么不同,Nginx 仍在动态地 gzip自压缩。
我对Nginx还是很陌生,但是我真的很茫然。
这是输出 ./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
这是我的 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;
}
}
任何帮助都非常感谢!