Linux下安装nginx如何启用ETag
nginx更新速度杠杠的,不到一年时间就更新了这么多版本了,今天一口气从1.2.3升级到1.8.0。为什么升级?因为nginx提供了ETag功能,对流量控制很有效果。
升级之前特意去查了一下资料,看看如何启用ETag,可惜翻到了百度的一篇教程,看得我快吐了。有兴趣的可以自行去看看,真心怀疑他们的程序员喜欢用goto语句:
http://zhanzhang.baidu.com/college/articleinfo?id=457
不过最后还是看懂了,下面把nginx部分挑出来详细说明一下。
首先就是你必须知道你当前的nginx版本是多少,我的nginx安装在:/usr/local/nginx/sbin/nginx
所以我执行以下命令:
/usr/local/nginx/sbin/nginx -v
查看到nginx的版本为1.2.3
时代够久远的,注定要升级,于是上nginx.org下载最新的nginx-1.8.0.tar.gz。
最重要的事!
最重要的事!
最重要的事!
①.如果nginx的版本小于1.3.3则需要升级之后才会增加ETag功能;(不得不升级啊!)
②.如果nginx版本介于1.3.3和1.7.3之间则需要关闭gzip之后才能开启ETag,因为此时nginx的gzip和ETag不兼容,如果真的需要同时使用这2种功能,还是可以通过修改nginx的源码重新编译后启用;
③.如果nginx版本大于等于1.7.3,直接编译安装即可启用,而且与gzip模块是兼容的哦。
看了以上三条,强烈建议无论你nginx版本多少都升级到1.8.0版本最好,现在是稳定版就是1.8.0。
其次,linux下安装nginx和升级nginx的步骤有一点不同,为了避免不小心覆盖的问题,我们只介绍nginx的升级。
我的nginx目录安装在/usr/local/nginx目录下,可执行文件就是/usr/local/nginx/sbin/nginx
一定要备份可执行文件:
cp -pR /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.1.2.3
然后是将下载好的nginx-1.8.0.tar.gz上传到/root目录下并解压:
cd /root tar zxvf nginx-1.8.0.tar.gz cd nginx-1.8.0 ./configure --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --sbin-path=/usr/local/nginx/sbin/nginx \ --conf-path=/usr/local/nginx/conf/nginx.conf \ --error-log-path=/var/logs/nginx/error.log \ --http-log-path=/var/logs/nginx/http.log \ --pid-path=/usr/local/nginx/nginx.pid \ --lock-path=/usr/local/nginx/nginx.lock \ --with-http_ssl_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_realip_module \ --with-http_gzip_static_module \ --with-http_stub_status_module \ --with-mail_ssl_module \ --with-debug \ --http-client-body-temp-path=/var/tmp/nginx/client/ \ --http-proxy-temp-path=/var/tmp/nginx/proxy/ \ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi/ \ --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi/ \ --http-scgi-temp-path=/var/tmp/nginx/scgi/ make
只能make,但不要make install。
编译完成之后,便在/root/nginx-1.8.0/objs目录下生成了最新版的nginx可执行文件,只需要将其复制到旧版覆盖即可。
\cp -pf /root/nginx-1.8.0/objs/nginx /usr/local/nginx/sbin/nginx
cp加反斜线是跳过alias防止提示,-p表示保留文件属性,-f表示强制覆盖。
覆盖完成之后检测一下新版的版本:
/usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.8.0,还没完。
最后,重启nginx之前先检测一下是否有配置文件需要改动。
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
执行之后如果没有报错就OK,有报错一般是缓存目录未建立什么的,手动执行命令建立一下目录。如果是配置文件出错,需要修改配置文件。不报错的情况是这样的:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
接着就是重启nginx了:
/usr/local/nginx/sbin/nginx -s reload
没有输出就说明重启成功了,然后到你的chrome调试功能的Network中查看一下图片资源的http头部吧,那里应该会有ETag项的。例如,如果你用的是最新版的nginx,你查看比较大的css文件gzip和ETag是可以共存的^^
如果没有ETag,请检查你的nginx.conf中是否存在以下代码,请将此行删除。
确认没有使用ngx_headers_more清除ETag头:同样在配置文件中不能出现如下语句的任意一句,如果出现请将其删除。
重新启动Nginx,就启用ETag功能了。
本文地址:http://blog.zhengshuiguang.com/nginx/nginx-etag.html
转载随意,但请附上文章地址:-)
评论已关闭