一、概述

以下是Zabbix环境的部署组件(Zabbix 6.0 LTS + RHEL 8.5 + Postgresql + TimeScaleDB + Nginx),默认情况下Zabbix Web使用http协议,本次将启用SSL证书实现HTTPS访问。

image-20220511222108896

二、证书准备

在实现HTTPS访问之前,需要有SSL证书,获取证书的途径:

  1. 自行创建,通过Openssl生成证书
  2. 通过各大云计算厂商申请,比如阿里云、腾讯云、华为云,一般提供为期一年的免费SSL证书,并提供各种web应用的SSL证书部署方法

因使用了DNSPod服务,有腾讯云的账号,因此本文采用通过腾讯云申请SSL证书。参考官方文档(域名型(DV)免费 SSL 证书申请流程):域名型(DV)免费 SSL 证书申请流程。获取Nginx的证书文件:

image-20220511224538465

从下载的压缩包中获取crt证书文件、key私钥文件,上传至Nginx所在服务器

image-20220512082241088

[root@localhost ~]# cd /etc/nginx/
[root@localhost ~]# mkdir cert
[root@localhost ~]# cd cert
[root@localhost cert]# ls
zbx.xxx.com_bundle.crt  zbx.xxx.com.key

三、修改Nginx配置文件

[root@localhost cert]# cd ../conf.d/
[root@localhost conf.d]# vim zabbix.conf

server {
        listen          80;
        server_name     zbx.xxx.com;
        #将默认80端口的请求重定向为HTTPS
        return 301 https://$host$request_uri;
        }
# 新增SSL部分配置
server {
        # SSL访问端口号为443
        listen          443 ssl http2;
        # 填写绑定证书的域名
        server_name     zbx.xxx.com;
        # 证书文件名称
        ssl_certificate "/etc/nginx/cert/zbx.xxx.com_bundle.crt";
        #私钥文件名称
        ssl_certificate_key "/etc/nginx/cert/zbx.xxx.com.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        #请按照以下协议配置
        ssl_protocols TLSv1.2 TLSv1.3;
        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        ...其他默认...
        }

# Nginx配置文件语法检查,successful即可
[root@localhost conf.d]# nginx -t     
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# 重启Nginx服务,无报错即可
[root@localhost nginx]# systemctl restart nginx  

四、测试

输入https://ip 或 https://zbx.xxx.com

image-20220512090704658