nginx 日期格式的修改方法及nginx平滑升级

发布时间:2020-05-31编辑:脚本学堂
本文介绍下,在nginx中修改日期格式的方法,有及平滑升级nginx的实例参考,有需要的朋友不妨看看。

Nginx的默认日志时间格式为:
23/Aug/2010:17:26:44 +0800

1.修改src/http/modules/ngx_http_log_module.c

第一处
修改前:
 

复制代码 代码示例:
 { ngx_string("time_local"), sizeof("28/Sep/1970:12:00:00 +0600") - 1,
                          ngx_http_log_time },
 

修改后:
 

复制代码 代码示例:
{ ngx_string("time_local"), sizeof("1970-09-28 12:00:00 +0600") - 1,
                          ngx_http_log_time },

第二处
修改前:
 

复制代码 代码示例:
  return ngx_cpymem(buf, ngx_cached_http_log_time.data,
                      ngx_cached_http_log_time.len);

修改后:
 

复制代码 代码示例:
  return ngx_cpymem(buf, ngx_cached_err_log_time.data,
                      ngx_cached_err_log_time.len);

2、修改 src/core/ngx_times.c 140行

修改前
 

复制代码 代码示例:
 (void) ngx_sprintf(p1, "%4d/%02d/%02d %02d:%02d:%02d",
                       tm.ngx_tm_year, tm.ngx_tm_mon,
                       tm.ngx_tm_mday, tm.ngx_tm_hour,
                       tm.ngx_tm_min, tm.ngx_tm_sec);

修改后
 

复制代码 代码示例:
    (void) ngx_sprintf(p1, "%4d-%02d-%02d %02d:%02d:%02d",
                       tm.ngx_tm_year, tm.ngx_tm_mon,
                       tm.ngx_tm_mday, tm.ngx_tm_hour,
                       tm.ngx_tm_min, tm.ngx_tm_sec);

效果对比:
修改前:
 

复制代码 代码示例:
127.0.0.1 - - [05/Sep/2012:13:28:46 +080] "GET / HTTP/1.1" 200 151 "-" "Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.0.5) Gecko/2008120908 Red Hat/3.0.5-1.el5_2 Firefox/3.0.5"

修改后
 

复制代码 代码示例:
127.0.0.1 - - [2012-09-05 13:43:32] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.0.5) Gecko/2008120908 Red Hat/3.0.5-1.el5_2 Firefox/3.0.5"

附,nginx平滑升级的配置方法。

有关nginx平滑升级的文章,脚本学堂之前也有介绍,例如:
nginx平滑重启的方法介绍
nginx平滑升级与重启
nginx平滑重启和升级的方法介绍

本节实现将Nginx平滑升级到稳定版1.0.0。

1、下载最新的Nginx源码安装包
 

复制代码 代码示例:
wget http://nginx.org/download/nginx-1.0.0.tar.gz

2、配置并编译Nginx(不要执行make install步骤)
 

复制代码 代码示例:

# tar zxvf nginx-1.0.0.tar.gz

# cd nginx-1.0.0
#./configure --user=www --group=www --prefix=/web/nginx --with-http_stub_status_module --with-http_ssl_module

# make
(make编译下就OK,不要执行make install。)

3、替换旧版本的Nginx
 

复制代码 代码示例:
#mv /web/nginx/sbin/nginx /web/nginx/sbin/nginx.old

备份旧版本的nginx的二进制文件。
 

复制代码 代码示例:
# cd objs/

在objs目录下可以看到刚刚编译好的新版本的nginx的二进制文件。
 

复制代码 代码示例:
# cp nginx /web/nginx/sbin/

复制新版本的nginx文件到你的nginx目录。

# /web/nginx/sbin/nginx -t
测试新版本的nginx是否配置正常。如果提示:
the configuration file /web/nginx/conf/nginx.conf syntax is ok
configuration file /web/nginx/conf/nginx.conf test is successful
则表示配置正确。
 

复制代码 代码示例:
# kill -USR2 `cat /web/nginx/nginx.pid`
 

让nginx把nginx.pid改成nginx.pid.oldbin并接着启动新的nginx。
 

复制代码 代码示例:
# kill -QUIT `cat /web/nginx/nginx.pid.oldbin`

退出旧版本的nignx。

4、确认升级是否完成
整个升级过程就完成了,最后确认一下升级是否成功。
 

复制代码 代码示例:
#/web/nginx/sbin/nginx -s reload

重新加载配置。
 

复制代码 代码示例:
# /web/nginx/sbin/nginx -v

获取Nginx版本信息,提示:
nginx version: nginx/1.0.0
则升级成功。