背景
Orange v0.6.0版本是一个重构版本, 着重为了解决之前版本在有大量规则配置时性能损耗的问题。 基本的设计思路是将原来的规则细分成两层, 第一层叫做selector, 用于将流量进行第一步划分, 在进入某个selector后才按照之前的设计进行规则匹配, 匹配到后进行相关处理。
https://lengrongfu.github.io/2019/05/21/orange-%E5%8E%9F%E7%90%86/
https://book.aikaiyuan.com/openresty/understanding-orange.html
https://zhuanlan.zhihu.com/p/67481992
生产单机部署
生产集群部署
配置更新
日志切割
Nginx日志对于统计、系统服务排错很有用。Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。错误日志记录了访问出错的信息,可以帮助我们定位错误的原因。本文将详细描述一下如何配置Nginx日志。
访问日志主要记录客户端的请求。客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。当然具体要记录哪些信息,你可以通过log_format指令定义。
错误日志在Nginx中是通过error_log指令实现的。该指令记录服务器和请求处理过程中的错误信息。
Nginx中通过access_log和error_log指令配置访问日志和错误日志,通过log_format我们可以自定义日志格式。如果日志文件路径中使用了变量,我们可以通过open_log_file_cache指令来设置缓存,提升性能。
access_log,level表示日志等级,日志等级分为[ debug | info | notice | warn | error | crit ],从左至右,日志详细程度逐级递减,即debug最详细,crit最少
error_log level可以是debug, info, notice, warn, error, crit, alert,emerg中的任意值。可以看到其取值范围是按紧急程度从低到高排列的。只有日志的错误级别等于或高于level指定的值才会写入错误日志中。默认值是error。
orange中日志和默认配置
orange项目logs/
目录下面有日志文件:
1 | 主日志 |
在配置文件conf/nginx.conf
中这样定义:
1 | http { |
日志切割
日常运维中orange的日志文件随着时间逐渐增多,日志单文件较大不方便日常文件生命周期清理。所以需要对原日志进行切割,每日一个日志文件。
常见方法有:
- 使用shell脚本重命名日志文件,使用
crontab
定时调用该脚本。 - 使用
logrotate
工具。
从nginx 0.7.6
版本开始access_log
的路径配置可以包含变量。
建议的配置:
1 | map $time_iso8601 $logdate { |
https://jingsam.github.io/2019/01/15/nginx-access-log.html
参考文献及资料
[1] Orange官网,链接:http://orange.sumory.com/
[2] Orange网关官网docker,链接:https://hub.docker.com/r/syhily/orange