首页 > 代码库 > Nginx之——其他配置

Nginx之——其他配置

1、 日志切割

    Nginx的日志切割有两种方式:

        第一种是编写shell脚本,思路是:先把需要切割的日志重命名,然后使用kill -USR1 `cat PID`命令生成新的日志文件。

        第二种是使用系统自带的logrotate工具来实现。

        在/etc/logrotate.d/下新建一个配置文件,内容如下:     

/tol/app/nginx/logs/*.log {        #定义需要执行滚动的日志,名称支持通配符匹配。

  notifempty

  missingok

  rotate 30

  daily

  dateext

  dateformat .%Y%m%d

  copytruncate

  compress

  nodelaycompress

  noolddir

  sharedscripts

  postrotate

  /bin/kill -USR1 `/bin/cat /tol/app/nginx/logs/nginx.pid`     #生成新的日志文件

  endscript

}

        

2、平滑升级(版本升级或者修改编译参数)

    2-1、编译安装新版的nginx,编译时指定的安装路径需要和旧版的一致 (安装前注意备份旧版的启动程序和配置文件)

    2-2、安装完成后,发送指令 kill -USR2  `cat PID`    #PID为nginx的PID文件

此时新版本的Nginx会自动启动。并且把旧版本的nginx.pid重命名为nginx.pid.oldbin

    2-3、发送指令 kill -WINCH `cat PID`

    2-4、ps 查看一下旧版本的Nginx的worker process是否全部退出,然后 发送指令 kill -QUIT `cat PID`关闭旧版Nginx


3、Nginx的Web缓存功能

    Nginx从0.7.48版开始,支持了类似Squid的缓存功能,可以将缓存内容保存在一个本地目录。

    缓存设置一般定义在http模块中,必须在反向代理时才生效。

常用的指令:

proxy_cache_path PATH [levels=NUMBER] keys_zone=ZONE_NAME:ZONE_SIZE [inactive=TIME] [max_size=SIZE] (此指令只能定义在http块中)

PATH定义缓存保存的路径 

        levels指定缓存的目录结构及每及目录名称的字节数 

ZONE_NAME为自定义的缓存区名称,

        ZONE_SIZE定义内存缓存空间大小

TIME是指缓存数据在指定时间内没有被访问,将***

         SIZE是指硬盘缓存空间


proxy_cache ZONE_NAME; #使用一个缓存区名称,ZONE_NAME的值为proxy_cache_path指令创建的缓存区名称


proxy_cache_methods GET HEAD; #定义缓存那些方法,默认是缓存GET HEAD方法


proxy_cache_min_users NUMBER; #定义缓存最小使用次数,默认值是1


proxy_cache_valid CODE TIME; #定义不同返回码的URL设置不用的缓存时间


proxy_cache_key lINE; #设置web缓存的Key值,Nginx根据Key值MD5哈希存储缓存,一般根据$host、$request_uri等变量组成


proxy_cache_purge ZONE_NAME  LINE; #ZONE_NAME定义需要清除的缓存区名称 后面的LINE是proxy_cache_key定义的key

#ngx_cache_purge 下载地址:http://labs.frickle.com/nginx_ngx_cache_purge/ 

proxy_cache_purge 设置要purge的缓存名字和cache_key(需和proxy_cache_key对应,不然会purge成404)

要使用purge,需在编译nginx的时候加上第三方的cache_purge模块  --add-module=/tol/soft/ngx_cache_purge-2.1

例子:

upstream test {
             server 10.0.0.100:9528;
             } 
proxy_cache_path /tol/app/nginx/cache levels=1:2 keys_zone=cache_one:10M inactive=1d max_size=512m;

server {
    listen 80;
    server_name test3;
    root html;
    index index.html  index.htm;

    location / {
	proxy_cache cache_one;
	proxy_cache_valid any 1m;
	proxy_cache_key $host$uri$is_args$args; 
            proxy_pass     	 http://test/;
            proxy_redirect           off;
            proxy_set_header     Host $host;
            proxy_set_header     X-Real-IP $remote_addr;
            proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
    }
	location ~ /purge(/.*) {
		allow 127.0.0.1;
		deny all;
		proxy_cache_purge cache_one $host$1$is_args$args;
}
access_log /tol/app/nginx/logs/test.log access;
}

4、Nginx配置自定义响应报文

    用途:可以显示在响应报文中,用于显示或确认某些信息(比如主机IP或者缓存命中情况)

    用法:add_header 名称  $变量名称    #变量名称为一般为nginx内置的变量,也可自定义

    

例子:

server {

listen 80;

server_name localhost;

add_header X-IP $server_addr;                              #X-IP为自定义的名称,后面的变量作用是显示服务器IP

add_header X-Cache $upstream_cache_status; #显示缓存是否命中,如果缓存未生效,则不会显示此header

}


本文出自 “一行菜鸟上青天” 博客,请务必保留此出处http://rmeos.blog.51cto.com/761575/1423976