nginx 系统配置

一、nginx 简介

1、nginx一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 服务器

2、nginxweb 优势:

支持并发解决 C10k 问题connect 10000 万级并发

反向代理负载均衡缓存服务器nginx 作为代理器,接收各种用户访问,将用户请求分发服务器nginx 还能实现动静分离技术,将动态页面静态页面分给不同服务器

③ IMAP/POP3/SMTP:邮局协议nginx 可以邮箱服务器。

3、nginx IO 多路复用

(1) 频分多路复用一个信道不同频段分开,传递不同信息,再组合到一起。

(2) 时分多路复用时间分成不同时间块,处理不同任务

(3) IO 多路复用

传统的多进程并发模型:每进来一个新的 I/O 流会分配一个新的进程管理

一个程序生成多个线程处理不同用户的请求

弊端: 只要一个线程故障,整个进程都会故障影响同进程中的其他线程

② I/O 多路复用:单个线程跟踪每个 I/O 流的状态,同时管理多个 I/O 流(一个线程同时传输多个 I/O 流)

一个程序服务多个用户,接收 A 的访问请求,交给后台服务器处理,期间的时延,程序再去接受 B 的请求,以此完成 I/O 多路复用

epoll 模型实现 I/O 多路复用

特点:异步,非阻塞

异步:用户请求时,程序不是同时处理;

非阻塞:处理 A 请求时延过程中,去处理 B 的请求

阻塞:一个用户请求占用了整个进程,处理完后才能处理下一个用户的请求

二、nginx 配置文件

1、查询 nginx 所有文件rpm -ql nginx

/etc/logrotate.d/nginx日志轮转文件

/etc/nginx/nginx.confnginx配置文件

/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编译器类型版本

编译时间显示 Nginx 服务器编译日期时间

④ 配置参数显示用于配置 Nginx 服务器的编译参数。这包括启用禁用模块安装路径调试选项等。

3、nginx配置文件

① CoreModule 核心模块

影响 nginx 全局指令,有运行 nginx 服务器的用户组 ;nginx 处理客户端请求的进程数 ;错误日志存放位置pid 存放路径

② EventModule 事件驱动模块

影响 nginx 服务器与用户的网络连接,配置每个进程的最大连接数事件驱动模块默认epoll异步连接

③ HttpCoreModule http 内核模块

include /etc/nginx/mime.types;                  定义文件扩展名和与之关联的程序类型

default_type application/octetstream;      应用程序流:字节流处理方式

4、默认虚拟主机配置文件

/etc/nginx/conf.d/default.conf

sever 文件嵌套http

nginx 日志管理

一、日志配置

1、日志的格式命令 log_format

(1) 简介

nginx 每个级别的配置有各自独立访问日志,日志格式通过 log_format 定义

(2) 语法

log_format name string

name 表示日志格式string 表示定义格式

配置文件在日志部分的配置

(3) access_log

用另一台客户机访问 nginx 服务器,观察 /var/log/nginx/access.log 即可查询客户机访问记录

① 日志配置包含变量

$remote_addr:记录远程客户端ip 地址 192.168.198.133

$remote_user远程用户,默认匿名访问

[$time_local]:服务器的本地时间 [09/Sep/2023:14:51:31 +0800]

“$request“:记录请求的 URL 和 http 协议 “GET / HTTP/1.1”        GET / 获取页面

$status:记录请求状态 200 / 404

$body_bytes_sent发送给客户端字节数,不包括响应头的大小 894

“$http_referer“:超链接

“$http_user_agent“:记录客户机浏览器相关信息 “Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0″

“$http_x_forwarded_for“:代理 ip

② 补充知识http 状态码:

HTTP状态码是指在HTTP协议中,服务器向客户返回的一个三位数字的状态码,表示服务器对客户端请求的响应结果常见的HTTP状态码及其含义:

1xx信息性状态码:

100 Continue:服务器已收到请求的初始部分客户端继续发送其余部分

101 Switching Protocols:服务器已经理客户端的请求,将通过 Upgrade 消息通知客户切换协议。

2xx成功状态码:

200 OK:请求已成功,服务器返回所请求的资源

201 Created:请求已经被满足,并在服务器上创建了一个新的资源

204 No Content:服务器成功处理请求,但不需要返回任何实体主体

3xx重定向状态码:

301 Moved Permanently:请求的资源已永久移动到新的 URI ,客户端更新链接

302 Found (临时重定向):请求的资源临时移动到新的 URI ,客户端继续使用原始 URI。

304 Not Modified:客户端的缓存资源最新的,不需要下载

4xx客户端错误状态码:

400 Bad Request:请求无效,服务器无法理解客户端的请求。

401 Unauthorized:请求要求身份验证,客户端未提供有效身份验证信息。

403 Forbidden:服务器拒绝了客户端的请求。

404 Not Found:服务器未找到请求的资源

5xx服务器错误状态码:

500 Internal Server Error:服务器遇到了意外的错误,无法完成请求。

502 Bad Gateway:服务器作为网关代理,从上游服务器接收到无效响应

503 Service Unavailable:服务器当前无法处理请求,通常是因为过载或维护

504 Gateway Timeout:服务器作为网关或代理,未及时从上游服务器接收到响应

(4) error_log

查询错误日志:tailf /var/log/nginx/error.log

② 404 页面

● 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;

max=1000:日志文件最大缓存数量为 1000

● inactive=20s min_uses=3:20秒内小于3次访问的日志文件清除

valid=1m:检查周期为一分钟

总结缓存最大量为1000,到达1000后开始每分钟清除20秒内小于3次的日志文件

二、日志轮转 / 切割

日志轮转文件:/etc/logrotate.d/nginx

create 0640 nginx root:日志轮转后产生新文件,权限 640,属主 nginx ,属组 root

daily:轮转周期,以天为单位

rotate 10:保留10份

missingok丢失提示

notifempty:空文件不轮转

compress压缩日志

delaycompress延迟压缩操作

三、日志分析

1、日志分析常用字段

$remote_addr $1 远程客户端 IP 地址

$time_local $4 本地时间

$request $7 请求 URL

$status $9 状态码

$body_bytes_sent $10 请求文件体积

2、日志文件实例

(1) 准备日志

(2) 示例

统计 2017年9月5日的网站 pv

网站 PV 量:指一个网站被用户访问的次数,也就是页面浏览量。每秒钟有多少次用户访问网站,就会被记录为一次 PV 

grep ’05/Sep/2017′ cd.mobiletrain.org.log | wc -l

统计 2017年9月5日8点-9点 间的 pv

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]” &amp;&amp; $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]} } ‘| sortk2 –rn | head -n10

{ ips[$1]++ } :把第一列索引放进 ips 数组中,并递增;

END{for(i in ips):行处理后,循环遍历 ips 数组

{print i,ips[i]}:打印出 ip 地址和访问的次数

sort –k2 –rnk2:第2列 ;-rn倒序

统计 2017年9月5日 访问大于50次的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进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注