nginx的https配置与状态页面监控

nginx的https配置与状态页面监控


https配置

申请证书

访问https://freessl.cn,注册并登录

在证书列表中,选择申请证书

1

输入域名,创建证书

2

输入邮箱,点击创建

3

下载KeyManager,官网为:https://keymanager.org/

4

下载安装后,打开KeyManager,设置密码

5

点击创建测试证书

6

配置证书

7

导出证书

8

9

将证书导入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:WindowsSystem32driversetc中的hosts文件

# 添加如下内容并保存
192.168.100.1 www.itbaozi.net.cn itbaozi.net.cn

访问测试

访问 https://itbaozi.net.cn

10


开启状态界面

开启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

11

状态页面信息详解:

状态码 表示的意义
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

12

添加主机

Configuration —— Hosts —— 右上角 Create host

13

添加监控项

Configuration --- Hosts --- 客户机的Items --- 右上角Create Items

填加第一项:requests

14

填加第二项:Reading

15

填加第三项:Writing

16

填加第四项:Waiting

17

添加graph

Configuration --- Hosts --- 客户机的Graphs --- 右上角Create graph

18

在Screens上添加图表方便监控

Monitoring --- Screens --- 右上角Edit screen

19

添加监控图表

20

监控nginx状态成功

21

原文地址:https://www.cnblogs.com/yuqinghao/p/14833802.html