首页 > Nginx > Linux下安装nginx如何启用ETag

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

blob.png

时代够久远的,注定要升级,于是上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是可以共存的^^

blob.png

如果没有ETag,请检查你的nginx.conf中是否存在以下代码,请将此行删除。

确认没有使用ngx_headers_more清除ETag头:同样在配置文件中不能出现如下语句的任意一句,如果出现请将其删除。

重新启动Nginx,就启用ETag功能了。

本文地址:http://blog.zhengshuiguang.com/nginx/nginx-etag.html

转载随意,但请附上文章地址:-)

标签:etag

评论已关闭