如何为Docker容器部署的Zabbix前端配置自签名SSL证书
配置Zabbix前端(Apache容器)实现ELB到容器的HTTPS加密
一、确认证书挂载与权限
- 确保EC2主机上的
example.crt和example.key所在目录(比如/opt/zabbix-ssl/)已挂载到容器内指定路径,在ECS任务定义的卷配置中添加绑定挂载:- 源路径:
/opt/zabbix-ssl/(EC2上的证书目录) - 目标路径:
/etc/apache2/ssl/(容器内自定义目录)
- 源路径:
- 进入容器验证证书文件存在且权限合规:
确保Apache运行用户docker exec -it <你的容器ID> ls -l /etc/apache2/ssl/www-data有读取权限,可在EC2主机上将证书文件权限设为644、密钥文件设为600。
二、配置Apache SSL虚拟主机
在容器内/etc/apache2/sites-available/路径下创建或修改SSL配置文件(比如zabbix-ssl.conf):
<VirtualHost *:443> ServerName zabbix.your-domain.com # 替换为实际Zabbix主机名 DocumentRoot /usr/share/zabbix SSLEngine on SSLCertificateFile /etc/apache2/ssl/example.crt # 对应容器内证书路径 SSLCertificateKeyFile /etc/apache2/ssl/example.key # 对应容器内密钥路径 # 可选安全配置 SSLProtocol TLSv1.2 TLSv1.3 SSLCipherSuite HIGH:!aNULL:!MD5 SSLHonorCipherOrder on # 继承Zabbix默认目录规则 <Directory /usr/share/zabbix> Options FollowSymLinks AllowOverride None Require all granted <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php [L] </IfModule> </Directory> <Directory /usr/share/zabbix/assets> Options FollowSymLinks AllowOverride None Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/zabbix-ssl-error.log CustomLog ${APACHE_LOG_DIR}/zabbix-ssl-access.log combined </VirtualHost>
三、启用SSL模块与站点
- 进入容器启用SSL模块:
docker exec -it <你的容器ID> a2enmod ssl - 启用SSL站点配置:
docker exec -it <你的容器ID> a2ensite zabbix-ssl.conf - 验证Apache配置合法性:
输出docker exec -it <你的容器ID> apache2ctl configtestSyntax OK则配置有效。 - 重启Apache服务:
docker exec -it <你的容器ID> service apache2 restart
四、ECS与ELB配置调整
- 在ECS任务定义中,将容器的
443端口映射到EC2实例的443端口(或自定义端口)。 - 配置ELB的HTTPS监听器:
- 协议:HTTPS(端口443)
- 转发目标:ECS服务所在EC2实例的映射端口
- 目标组协议设为HTTPS,端口与容器映射端口一致。
五、验证访问
访问ELB关联的Zabbix域名,确认能通过HTTPS正常访问前端,浏览器提示自签名证书属于正常现象。
内容的提问来源于stack exchange,提问作者ehsan ali
相关产品推荐
相关产品推荐

