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
}