目录
1、上传nginx-module-vts-master软件包并解压
一、Nginx概述
1、nginx的特点
nginx一个具有高性能的HTTP和反向代理的WEB服务器,同时也是一个POP3/SMTP/IMAP代理服务器
一款高性能、轻量级Web服务软件
稳定性高
系统资源消耗低
对HTTP并发连接的处理能力高
单台物理服务器可支持30 000~50 000个并发请求(理论上的) 实际可支持2-3万
Nginx并发连接
NG并发连接能力受以下二个因素的影响:
- CPU个数
- 本地物理服务器系统的最大文件打开数
2、Nginx应用场景
静态服务器(图片、视频服务)
动态服务
反向代理,负载均衡
缓存服务
2.1使用nginx的网站
因为nginx的特点是内有内存少,并发能力强。
国内使用nginx网站用户有: 百度,BWS,新浪,网易,腾讯等
但是 淘宝 再GPL的原则上进行二次开发,出现了现在的 Tengine网站
反向代理解释:是指用户不需要知道目标服务器的地址,也不需要再用户端做任何设定,可以直接通过访问反向代理服务器来获得目标服务器的资源,反向代理提高了内部服务器的安全,加快了对内部服务器的访问速度。
反向代理的优点:
①提高了内部服务器的安全
②加快了对内部服务器的访问速度
③节约了有限的IP资源
3、nginx的HTTP七层代理和四层代理
nginx的http七层代理,其实它工作在OSI七层模型的应用层。由于其可以解析http协议,我们可以根据URI进行请求的分发,具有很大的灵活性,但是协议的解析存在性能的消耗。为了能获取更高的代理性能,
nginx支持了四层代理,即传输层,就是我们常说的TCP/UDP层,没有协议解析,就是简单的TCP/UDP转发,代理性能突飞猛进,该功能依赖于ngx_http_upstream_module和ngx_stream_upstream_module,互联网公司将其作为入口代理来工作。(版本在1.18之上才支持)
二、Nginx和Apache的区别
Nginx是一个基于事件的Web服务器,Apache是一个基于流程的服务器。
Nginx所有请求都是由一个线程处理,Apache单个线程处理单个请求。
Nginx在内存消耗和连接方面更好,Apache在内存消耗和连接方便一般。
Nginx的性能和伸缩性不依赖于硬件,Apache依赖于CPU和内存等硬件。
Nginx支持热部署,Apache不支持热部署。
Nginx对于静态文件处理具有高效率,Apache相对一般。
Nginx在反向代理场景具有明显优势,Apache相对一般。
三、Nginx 监控模块(vts模块)
监控Nginx主要用到以下三个模块:
1、nginx-module-vts:Nginx virtual host traffic status module,Nginx的监控模块,能够提供JSON格式的数据产出。
2、nginx-vts-exporter:Simple server that scrapes Nginx vts stats and exports them via HTTP for Prometheus consumption。主要用于收集Nginx的监控数据,并给Prometheus提供监控接口,默认端口号9913。
3、Prometheus:监控Nginx-vts-exporter提供的Nginx数据,并存储在时序数据库中,可以使用PromQL对时序数据进行查询和聚合。
1、上传nginx-module-vts-master软件包并解压
unzip nginx-module-vts-master.zip 解压
2、安装Nginx依赖环境
yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
3、优化路径及编译安装nginx
优化管理
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
检查开启的模块
nginx -v 检查 nginx版本
nginx -V
watch -n 1 nginx 观察nginx状态
4、备份nginx的备份文件
5、修改nginx的配置文件
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /usr/local/nginx/conf/nginx.conf
进去后再http{ } 中添加如下内容
vhost_traffic_status_zone; #流量状态监控
log_format main '{ "@timestamp": "$time_local", '
'"@fields": { '
'"uri":"$request_uri",'
'"url":"$uri",'
'"upstream_addr":"$upstream_addr",'
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"host":"$host",'
'"server_addr":"$server_addr",'
'"request_time": "$request_time", '
'"request_time":"$request_time",'
'"status":"$status",'
'"request": "$request", '
'"request_method": "$request_method", '
'"size":$body_bytes_sent,'
'"upstream_time":"$upstream_response_time"'
'"h