nginx的https配置与状态页面监控
nginx的https配置与状态页面监控
https配置
申请证书
访问https://freessl.cn,注册并登录
在证书列表中,选择申请证书
输入域名,创建证书
输入邮箱,点击创建
下载KeyManager,官网为:https://keymanager.org/
下载安装后,打开KeyManager,设置密码
点击创建测试证书
配置证书
导出证书
将证书导入nginx主机
[root@nginx ~]# ls
anaconda-ks.cfg itbaozi-net-cn-nginx-0531203109.zip
[root@nginx ~]# mkdir /usr/local/nginx/ssl
[root@nginx ~]# unzip itbaozi-net-cn-nginx-0531203109.zip -d /usr/local/nginx/ssl/
[root@nginx ~]# ls /usr/local/nginx/ssl/
itbaozi.net.cn_chain.crt itbaozi.net.cn_key.key
修改配置文件
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
······
//取消注释并修改域名和证书位置
# HTTPS server
#
server {
listen 443 ssl;
server_name *.itbaozi.net.cn;
ssl_certificate /usr/local/nginx/ssl/itbaozi.net.cn_chain.crt;
ssl_certificate_key /usr/local/nginx/ssl/itbaozi.net.cn_key.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
······
[root@nginx ~]# nginx -s reload
[root@nginx ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:443 0.0.0.0:*
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
配置域名和IP的映射关系
Windows:
用管理员权限打开记事本,并打开C:\Windows\System32\drivers\etc\中的hosts文件
# 添加如下内容并保存
192.168.100.1 www.itbaozi.net.cn itbaozi.net.cn
访问测试
开启状态界面
开启status:
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
······
location /status {
stub_status on;
allow 192.168.100.1;
deny all;
}
······
[root@nginx ~]# nginx -s reload
访问测试
访问 192.168.100.1/status
状态页面信息详解:
状态码 | 表示的意义 |
---|---|
Active connections 2 | 当前所有处于打开状态的连接数 |
accepts | 总共处理了多少个连接 |
handled | 成功创建多少握手 |
requests | 总共处理了多少个请求 |
Reading | nginx读取到客户端的Header信息数,表示正处于接收请求状态的连接数 |
Writing | nginx返回给客户端的Header信息数,表示请求已经接收完成, 且正处于处理请求或发送响应的过程中的连接数 |
Waiting | 开启keep-alive的情况下,这个值等于active - (reading + writing), 意思就是Nginx已处理完正在等候下一次请求指令的驻留连接 |
状态界面监控
本次环境为:
系统信息 | 主机名 | IP |
---|---|---|
RHEL 8 | nginx | 192.168.100.1 |
RHEL 8 | zabbix | 192.168.100.6 |
准备工作:
zabbix监控配置详情见:监控服务Zabbix部署 和 Zabbix配置
nginx主机安装zabbix客户端
#nginx
//关闭防火墙和SELINUX
[root@nginx ~]# systemctl disable --now firewalld
[root@nginx ~]# sed -ri 's/^(SELINUX=).*/\1disabled/g' /etc/selinux/config
[root@nginx ~]# setenforce 0
//安装依赖包
[root@nginx ~]# yum -y install gcc gcc-c++ bzip2 pcre* make
[root@nginx ~]# wget https://cdn.zabbix.com/zabbix/sources/stable/5.2/zabbix-5.2.6.tar.gz
[root@nginx ~]# tar xf zabbix-5.2.6.tar.gz
[root@nginx ~]# useradd -r -M -s /sbin/nologin zabbix
[root@nginx ~]# cd zabbix-5.2.6/
[root@nginx zabbix-5.2.6]# ./configure --enable-agent
[root@nginx zabbix-5.2.6]# make install
//修改配置文件
[root@nginx ~]# vim /usr/local/etc/zabbix_agentd.conf
······
Server=192.168.100.6 #修改成服务端IP
······
ServerActive=192.168.100.6 #修改成服务端IP
······
Hostname=nginx
[root@nginx ~]# zabbix_agentd
[root@nginx ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:443 0.0.0.0:*
LISTEN 0 128 0.0.0.0:10050 0.0.0.0:*
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
编写监控脚本
#nginx
[root@nginx ~]# mkdir /scripts
[root@nginx ~]# cd /scripts
[root@nginx scripts]# chown zabbix.zabbix /scripts
[root@nginx scripts]# ll / | grep scripts
drwxr-xr-x 2 zabbix zabbix 35 May 31 21:44 scripts
[root@nginx scripts]# vim check_nginx_status.sh
#!/bin/bash
nginx_server=192.168.100.1
requests(){
requests=`curl -s http://${nginx_server}/status | awk 'NR==3{print $3}'`
echo ${requests}
}
Reading(){
Reading=`curl -s http://${nginx_server}/status | awk 'NR==4{print $2}'`
echo ${Reading}
}
Writing(){
Writing=`curl -s http://${nginx_server}/status | awk 'NR==4{print $4}'`
echo ${Writing}
}
Waiting(){
Waiting=`curl -s http://${nginx_server}/status | awk 'NR==4{print $6}'`
echo ${Waiting}
}
main(){
case $1 in
requests)
requests;
;;
Reading)
Reading;
;;
Writing)
Writing;
;;
Waiting)
Waiting;
;;
esac
}
main $1
[root@nginx scripts]# chmod +x check_nginx_status.sh
//开启自定义监控并添加指标
[root@nginx ~]# vim /usr/local/etc/zabbix_agentd.conf
······
#在最后面添加以下内容
UnsafeUserParameters=1
UserParameter=check_nginx_status[*],/scripts/check_nginx_status.sh $1
//重启zabbix
[root@nginx ~]# pkill zabbix_agentd
[root@nginx ~]# zabbix_agentd
#zabbix
//测试是否能获取客户端的指标
[root@zabbix ~]# zabbix_get -s 192.168.100.1 -k check_nginx_status['requests']
121
[root@zabbix ~]# zabbix_get -s 192.168.100.1 -k check_nginx_status['Reading']
0
[root@zabbix ~]# zabbix_get -s 192.168.100.1 -k check_nginx_status['Writing']
1
[root@zabbix ~]# zabbix_get -s 192.168.100.1 -k check_nginx_status['Waiting']
0
网页配置
添加主机组
Configuration —— Host groups —— 右上角 Create host group
添加主机
Configuration —— Hosts —— 右上角 Create host
添加监控项
Configuration --- Hosts --- 客户机的Items --- 右上角Create Items
填加第一项:requests
填加第二项:Reading
填加第三项:Writing
填加第四项:Waiting
添加graph
Configuration --- Hosts --- 客户机的Graphs --- 右上角Create graph
在Screens上添加图表方便监控
Monitoring --- Screens --- 右上角Edit screen
添加监控图表