写点什么

nginx 配置日志为 json 格式,nginx 按照天实现日志分割,nginx 配置负载均衡

用户头像
关注
发布于: 2021 年 03 月 30 日

1.nginx 功能,可以作为 HTTP 服务器,也可作为反向代理服务器,邮件服务器。支持 FastCGI、SSL、Virtual Host、URL Rewrite、Gzip 等功能。并且支持很多第三方的模块扩展。在使用 nginx 过程中我们除了要使用 nginx 自身的功能之外,我们还需要让它使用起来更加得心应手和舒服,这时我们可以自己配置 nginx 日志显示,实现服务监听,访问统计等。一个好的 nginx 日志配置方便我们对服务的监控,负载均衡和 session 共享可以方便我们横向扩展服务,日志分割使我们更容易区分每天服务的访问情况。具体配置如下。ng 在作为服务代理的情况下,访问量是 tomcat 几十倍,单台 tomcat 访问量最大也就一千左右,但是使用 ng 作为服务器的代理访问量上万都是可以的,ng 在做服务代理这一块目前非常方便实用。


1.nginx 配置日志为 json 格式,方便其它服务抓取数据,实现访问监听,可以做大数据访问分析,同时也可以监控服务运行的有效状态,比较方便简单
#配置日志为json格式
log_format main '{
"@timestamp":"$time_local",
"host":"$server_addr",
"clientip":"$remote_addr",
"remoteuser":"$remoteuser",
"request":"$request",
"httpuseragent":"$httpuseragent",
"size":"$bodybytessent",
"responsetime":"$request_time",
"upstreamtime":"$upstreamresponsetime",
"upstreamhost":"$upstream_addr",
"http_host":"$host",
"url":"$uri",
"domain":"$host",
"xff":"$httpxforwarded_for",
"referer":"$http_referer",
"status":"$status"
}';
复制代码
2.nginx 配置日志按照天分割,配置在 server 里
		 #日志按照天分割
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})")
{
set $year $1;
set $month $2;
set $day $3;
set $hour $4;
set $minutes $5;
set $seconds $6;
}
accesslog logs/nginxaccess_$year-$month-$day.log main;
复制代码
3.nginx 配置负载均衡,使用 ip_hash 实现 session 共享


	#负载均衡,使用ip_hash实现session共享
upstream dianyunetserver {
server 102.13.22.223:8080;
server 102.13.22.224:8080;
server 102.13.22.225:8080;
ip_hash;
}
复制代码
4.nginx 全部配置如下
#配置启动用户为root
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
#配置日志为json格式
log_format main '{
"@timestamp":"$time_local",
"host":"$server_addr",
"clientip":"$remote_addr",
"remoteuser":"$remoteuser",
"request":"$request",
"httpuseragent":"$httpuseragent",
"size":"$bodybytessent",
"responsetime":"$request_time",
"upstreamtime":"$upstreamresponsetime",
"upstreamhost":"$upstream_addr",
"http_host":"$host",
"url":"$uri",
"domain":"$host",
"xff":"$httpxforwarded_for",
"referer":"$http_referer",
"status":"$status"
}';
#不生效
#access_log logs/access.log main;#1、转发的日志查看
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

#负载均衡实现session共享,缺少配置流量分配和健康检查
upstream dianyunetserver {
server 102.13.22.223:8080;
server 102.13.22.224:8080;
server 102.13.22.225:8080;
ip_hash;
}

server {
listen 80;
server_name 127.0.0.1;
location / {
proxypass http://dianyunet_server;
gzip on; #开启gzip增加访问速度
gzipminlength 1k; #设置允许压缩的页面最小字节数,超过1k的文件会被压缩
gzip_buffers 16 64k; #获取多少内存用于缓存压缩结果
gziphttpversion 1.1; #识别http协议的版本
gzipcomplevel 6; #gzip压缩比(1~9),越小压缩效果越差,但是越大处理越慢,所以一般取中间值
gzip_types text/plain application/x-javascript text/css application/xml image/jpeg image/gif image/png; #对特定的MIME类型生效,js和css文件会被压缩
gzip_vary on; #设置为on会在Header里增加 "Vary: Accept-Encoding"
gzip_disable "MSIE [1-6]\."; #IE6不使用gzip
gzip_proxied any; #代理结果数据的压缩反向代理使用
proxysetheader X-Real-IP $remote_addr;
proxysetheader X-Forwarded-For $proxyaddx_forwarded_for;
#proxysetheader X-Forwarded-For $httpxforwarded_for;
proxysetheader Host $http_host;
proxyconnecttimeout 100;
proxyreadtimeout 600;
proxysendtimeout 600;
proxybuffersize 64k;
proxy_buffers 4 32k;
proxybusybuffers_size 64k;
proxytempfile_write_size 64k;
}

#日志按照天分割
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})")
{
set $year $1;
set $month $2;
set $day $3;
set $hour $4;
set $minutes $5;
set $seconds $6;
} accesslog logs/nginxaccess_$year-$month-$day.log main; }
}
复制代码


发布于: 2021 年 03 月 30 日阅读数: 12
用户头像

关注

还未添加个人签名 2021.03.26 加入

还未添加个人简介

评论

发布
暂无评论
nginx配置日志为json格式,nginx按照天实现日志分割,nginx配置负载均衡