nginx 系统配置
一、nginx 简介
1、nginx 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 服务器。
① 支持高并发(解决 C10k 问题:connect 10000 万级并发)
② 反向代理:负载均衡和缓存服务器。nginx 作为代理器,接收各种用户的访问,将用户请求分发给服务器 ;nginx 还能实现动静分离技术,将动态页面和静态页面分给不同的服务器。
③ IMAP/POP3/SMTP:邮局协议,nginx 可以做邮箱服务器。
(1) 频分多路复用:一个信道不同频段分开,传递不同的信息,再组合到一起。
(2) 时分多路复用:将时间分成不同的时间块,处理不同的任务
(3) IO 多路复用:
① 传统的多进程并发模型:每进来一个新的 I/O 流会分配一个新的进程管理。
弊端: 只要一个线程故障,整个进程都会故障(影响同进程中的其他线程)
② I/O 多路复用:单个线程跟踪每个 I/O 流的状态,同时管理多个 I/O 流(一个线程同时传输多个 I/O 流)
一个程序服务多个用户,接收 A 的访问请求,交给后台服务器处理,期间的时延,程序再去接受 B 的请求,以此完成 I/O 多路复用。
阻塞:一个用户请求占用了整个进程,处理完后才能处理下一个用户的请求
二、nginx 配置文件
1、查询 nginx 所有文件:rpm -ql nginx
/etc/logrotate.d/nginx :日志轮转文件
/etc/nginx/nginx.conf:nginx 主配置文件
/etc/nginx/conf.d:nginx 子配置文件夹
/etc/nginx/conf.d/default.conf:nginx 默认网站配置文件
/etc/nginx/fastcgi_params:动态网站模块
/etc/nginx/mime.types:文件关联程序,包含网站文件类型和相关处理程序
2、nginx 编译参数:nginx -V
运行 nginx -V,会显示 Nginx 服务器的编译参数和配置选项的信息
② 编译器信息:显示用于编译 Nginx 的编译器类型和版本。
④ 配置参数:显示用于配置 Nginx 服务器的编译参数。这包括启用或禁用的模块、安装路径、调试选项等。
3、nginx 主配置文件
影响 nginx 全局的指令,有运行 nginx 服务器的用户组 ;nginx 处理客户端请求的进程数 ;错误日志存放位置 ;pid 存放路径
影响 nginx 服务器与用户的网络连接,配置每个进程的最大连接数。事件驱动模块默认是 epoll(异步连接)
include /etc/nginx/mime.types; 定义文件扩展名和与之关联的程序类型
default_type application/octet–stream; 应用程序流:字节流处理方式
4、默认虚拟主机配置文件
/etc/nginx/conf.d/default.conf
nginx 日志管理
一、日志配置
1、日志的格式和命令 log_format
(1) 简介
nginx 每个级别的配置有各自独立的访问日志,日志格式通过 log_format 定义
(2) 语法
(3) access_log
用另一台客户机访问 nginx 服务器,观察 /var/log/nginx/access.log 即可查询到客户机的访问记录:
$remote_addr:记录远程客户端的 ip 地址 192.168.198.133
[$time_local]:服务器的本地时间 [09/Sep/2023:14:51:31 +0800]
“$request“:记录请求的 URL 和 http 协议 “GET / HTTP/1.1” GET / 获取根页面
$body_bytes_sent:发送给客户端的字节数,不包括响应头的大小 894
“$http_user_agent“:记录客户机浏览器相关信息 “Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0″
HTTP状态码是指在HTTP协议中,服务器向客户端返回的一个三位数字的状态码,表示服务器对客户端请求的响应结果。常见的HTTP状态码及其含义:
1xx – 信息性状态码:
100 Continue:服务器已收到请求的初始部分,客户端继续发送其余部分。
101 Switching Protocols:服务器已经理解客户端的请求,将通过 Upgrade 消息头通知客户端切换协议。
201 Created:请求已经被满足,并在服务器上创建了一个新的资源。
204 No Content:服务器成功处理请求,但不需要返回任何实体主体。
301 Moved Permanently:请求的资源已永久移动到新的 URI ,客户端更新其链接。
302 Found (临时重定向):请求的资源临时移动到新的 URI ,客户端继续使用原始 URI。
304 Not Modified:客户端的缓存资源是最新的,不需要下载。
400 Bad Request:请求无效,服务器无法理解客户端的请求。
401 Unauthorized:请求要求身份验证,客户端未提供有效的身份验证信息。
5xx – 服务器错误状态码:
500 Internal Server Error:服务器遇到了意外的错误,无法完成请求。
502 Bad Gateway:服务器作为网关或代理,从上游服务器接收到无效的响应。
503 Service Unavailable:服务器当前无法处理请求,通常是因为过载或维护。
504 Gateway Timeout:服务器作为网关或代理,未及时从上游服务器接收到响应。
(4) error_log
① 查询错误日志:tailf /var/log/nginx/error.log
② 404 页面:
● 创建错误反馈页面:/usr/share/nginx/html/404.html
● 观察 404 界面:
2、日志缓存
(1) 简介:访问到来时,对于每一条日志记录,都是先打开文件,再写入日志,然后关闭,占用系统 IO
(2) 节省 IO 的办法:在配置文件中启用日志缓存 open_log_file_cache(默认关闭)
open_log_file_cache max=1000 inactive=20s min_uses=3 valid=1m;
● inactive=20s min_uses=3:20秒内小于3次访问的日志文件就清除掉
总结:缓存最大量为1000,到达1000后开始每分钟清除20秒内小于3次的日志文件。
二、日志轮转 / 切割
● create 0640 nginx root:日志轮转后产生新文件,权限 640,属主 nginx ,属组 root
三、日志分析
1、日志分析常用字段
$request $7 请求 URL
$status $9 状态码
2、日志文件实例
(1) 准备日志
(2) 示例:
网站 PV 量:指一个网站被用户访问的次数,也就是页面浏览量。每秒钟有多少次用户访问网站,就会被记录为一次 PV
grep ’05/Sep/2017′ cd.mobiletrain.org.log | wc -l
● grep ’05/Sep/2017:08′ sz.mobiletrain.org.log | wc -l
’05/Sep/2017:08’:08 → 08:00:00 – 08:59:59
● awk ‘$4>=”[05/Sep/2017:08:00:00]” && $4<“[05/Sep/2017:09:00:00]” {print $0}’ sz.mobiletrain.org.log | wc -l
匹配时间在 05/Sep/2017:08:00:00 – 05/Sep/2017:09:00:00 的访问信息, {print $0}:打印整行
② 统计 2017年9月5日 访问最多的10个IP(ip top10)
grep ’05/Sep/2017′ cd.mobiletrain.org.log | awk ‘{ ips[$1]++ } END{for(i in ips){print i,ips[i]} } ‘| sort –k2 –rn | head -n10
{ ips[$1]++ } :把第一列的索引放进 ips 数组中,并递增;
END{for(i in ips):行处理后,循环遍历 ips 数组
{print i,ips[i]}:打印出 ip 地址和访问的次数
grep ’05/Sep/2017′ cd.mobiletrain.org.log | awk ‘{ ips[$1]++ } END{for(i in ips) {if(ips[i]>50) {print i,ips[i]}} } ‘| sort –k2 –rn | head -n10
③ 统计2017年9月5日 访问最多的10个页面($request top 10)
grep ’05/Sep/2017′ cd.mobiletrain.org.log | awk ‘{urls[$7]++} END{for(i in urls){print i,urls[i]}}’ | sort –k2 –rn | head -n10
{urls[$7]++}:$7:用户访问的界面
④ 统计2017年9月5日 每个URL访问内容总大小($body_bytes_sent)
grep ’05/Sep/2017′ cd.mobiletrain.org.log | awk ‘{ urls[$7]++; size[$7]+=$10}
END{for(i in urls){print urls[i],size[i],i}}’| sort -k1 –rn | head -n10
size[$7]+=$10:$10:$body_bytes_sent 文件字节数 ;只要出现 $7($request) 就将访问的文件字节数加到 size[$7] 中,以统计文件总大小。
⑤ 统计2017年9月5日 每个IP访问状态码数量($status)
grep ’05/Sep/2017′ cd.mobiletrain.org.log | awk ‘{ ip_code[$1″ “$9]++} END{ for(i in ip_code){print i,ip_code[i]} }’ | sort -k1 –rn | head -n10
awk ‘{ ip_code[$1″ “$9]++}:把 ip 地址和状态码添加至 ip_code 数组中
统计2017年9月5日 每个IP访问状态码为 404 及出现的次数
grep ’05/Sep/2017′ cd.mobiletrain.org.log | awk ‘$9==”404″{ip_code[$1″ “$9]++} END{for(i in ip_code){print i,ip_code[i]}}’ | sort -k3 –rn | head -n10
原文地址:https://blog.csdn.net/weixin_61428407/article/details/132867141
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_49430.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!