nginx配置语法
- 配置文件由指令与指令块构成
- 每条指令以“;”分号结尾,指令与参数间以空格符号分隔
- 指令块以{}大括号将多条指令组织到一起
- 指令块可以包含指令块
- 指令块可以有名字,也可以无名字,有无名字是由提供指令的nginx模块来决定的
- include语句允许组合多个配置文件以提升可维护性
- 只用#符号添加注释,提高可读性
- 使用$符号使用变量
- 变量一般是其他模块提供的
- 变量一般是其他模块提供的
- 部分指令的参数支持正则表达式
配置参数单位
- ms:毫秒
- s:秒
- m:分钟
- h:小时
- d:天
- w:周
- m:月
- y:年
空间单位
- 不填写默认:bytes,字节
- k/K:kilobytes,千字节
- m/M:megabytes,兆字节
- g/G:gigabytes,g字节
http配置的指令块
- http:{}内所有的指令都是由http模块来解析,执行的
- server:对应一个域名或一组域名
- location:url表达式
- upstream:表示上游服务,当nginx与tomcat等企业内网其他服务交互的时候可以定义一个upstream
nginx命令行
格式:nginx -s reload
-
帮助:-? -h
-
使用指定的配置文件:-c
-
是定配置指令:-g
-
指定运行目录:-p
-
发送信号:-s
- 立刻停止服务:stop
- 优雅的停止服务:quit
- 重载配置文件(重启):reload(quit形式)
- 重新开始记录日志文件:reopen
-
测试配置文件是否有语法错误:-t或-T
-
打印nginx的版本信息、编译信息等:-v 或 -V
热部署
- 先备份当前版本nginx二进制文件
- 给nginx master发送信号:kill -USR2 2635(进程)
- nginx会新启动一个master进程和worker进程,平滑的切换
- 新的请求会进入新的进程中
- 此时可以关闭老的worker进程 kill -WINCH 2635
- 此时老的worker会退出,但是老的master还在,可以证明,nginx已经升级完成
- 如果新版本的nginx有问题想要退回老版本的nginx上,可以给老版本的nginx进程发送reload信号,重新启动
- 所以老版本的master进程是不会退出的,允许版本回退
日志切割
- 修改原日志名称
- 执行reopen命令
- 实际这种方式并不可取
- 正常情况定期会执行一次日志切割,可以写一个bash脚本定期执行切割