阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用Nginx+Docker配置HTTPS负载均衡

395次阅读
没有评论

共计 4227 个字符,预计需要花费 11 分钟才能阅读完成。

了解 Docker

Docker 是一个 golang 编写的开源轻量级的、可移植的、自给自足的容器,Docker 主要应用在以下场景:

  • web 应用的自动化打包和发布;
  • 自动化测试和持续集成、发布;
  • 在服务型环境中部署和调整数据库或其他的后台应用;
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

Docker 系统有两个程序:docker 服务端和 docker 客户端。其中 docker 服务端是一个服务进程,管理着所有的容器。docker 客户端则扮演着 docker 服务端的远程控制器,可以用来控制 docker 的服务端进程。大部分情况下,docker 服务端和客户端运行在一台机器上。

  • 镜像:一个镜像相当于一个 root 文件系统,包含运行需要的文件、库、资源、配置
  • 容器:容器是镜像的实例化操作,容器有自己独立的文件系统、网络配置、进程空间,每个容器是独立的运行机制,容器是无状态的,数据应保存在数据卷中。
  • 仓库:管理 docker 镜像的发布

docker 安装及配置

在 CentOS 系列系统中可直接使用 yum 命令进行搜索安装,安装完毕后可运行 docker version 查看安装的版本,docker 包含了很有公用的镜像,可使用 docker search 进行搜索安装。

yum install docker -y
docker pull nginx
# 运行 4 个 docker 镜像,网站目录在./ningx/html/ 下,日志文件在 ./nginx/logs/ 下
docker run -it -p 8081:80 –name nginx1 -v `pwd`/nginx/html1/:/usr/share/nginx/html/ -v `pwd`/nginx/logs1/:/var/log/nginx/  -d nginx
docker run -it -p 8082:80 –name nginx2 -v `pwd`/nginx/html2/:/usr/share/nginx/html/ -v `pwd`/nginx/logs2/:/var/log/nginx/ -d nginx
docker run -it -p 8083:80 –name nginx3 -v `pwd`/nginx/html3/:/usr/share/nginx/html/ -v `pwd`/nginx/logs3/:/var/log/nginx/ -d nginx
docker run -it -p 8084:80 –name nginx4 -v `pwd`/nginx/html4/:/usr/share/nginx/html/ -v `pwd`/nginx/logs4/:/var/log/nginx/ -d nginx

安装 docker php-fpm

docker pull php:7.1-fpm
docker run -p 9000:9000 –name php-fpm1 -d -v /opt/app/docker/nginx/app1/:/var/www/html:ro php:7.1-fpm
docker run –name nginx1 -p 8081:80 -d -v /opt/app/docker/nginx/html1:/usr/share/nginx/html:ro -v /opt/app/docker/nginx/conf1:/etc/nginx/conf.d:ro -v /opt/app/docker/nginx/logs1:/var/log/nginx –link php-fpm1:php nginx
echo “<?php phpinfo();” > /opt/app/docker/nginx/app1/index.php

推荐《Docker 从入门到实践》,具体可打开 https://www.linuxidc.com/Linux/2016-02/128290.htm

nginx 配置

nginx 的安装就不再描述了,最简单快捷的可使用 yum 进行安装,可可以自行去官网进行下载编译安装,以下是我的 nginx 负载均衡 https 到 docker 的配置文件:

注:我的运行环境在 aws 上,你可以将 docker 和 nginx 安装在一台机器上,也可以将 docker 部署在 1 台或 4 台机器,nginx 部署在一台机器,再结合 keepalived 做高可用就可实现高可用双机热备的 https 负载均衡啦~

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    log_format  main  ‘$remote_addr – $remote_user [$time_local] “$request” ‘
                      ‘$status $body_bytes_sent “$http_referer” ‘
                      ‘”$http_user_agent” “$http_x_forwarded_for”‘;
   
    access_log  /var/log/nginx/access.log  main;
   
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay        on;
    keepalive_timeout  65;
    types_hash_max_size 2048;
   
    include            /etc/nginx/mime.types;
    default_type        application/octet-stream;
       
    index  index.html index.htm;
   
    upstream docker_nginx {
        ip_hash; #同一个 ip 一定时间内负载到一台机器
        server 172.31.0.155:8081; # docker 虚拟的第 1 台 nginx 机器
        server 172.31.0.155:8082; # docker 虚拟的第 2 台 nginx 机器
        server 172.31.0.155:8083; # docker 虚拟的第 3 台 nginx 机器
        server 172.31.0.155:8084; # docker 虚拟的第 4 台 nginx 机器
    }
   
    server {
        # 使用 openssl 自建的 rsa 证书
        ssl_certificate /opt/ssl/nginx.ipp365.com.crt;
        ssl_certificate_key /opt/ssl/nginx.ipp365.com.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
   
        listen 443;
        ssl on;
        server_name nginx.ipp365.com;
       
        location / {
                # 代理到真实机器,如果真实机器也安装了 https 则使用 https
                # 一般代理集群对流量进行了 https 后,真实机器可不再使用 https
                proxy_pass http://docker_nginx;
        }
    }
}

创建 ssl 自建的证书

线上证书一般去 ca 申请的,测试的话可以使用 openssl 自己创建两个证书,创建命令如下:

# 生成一个 2048 位密钥文件
openssl genrsa -out privkey.pem 2048
# 使用密钥文件生成一个证书
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095

SSL 常见错误

问题:此网站出具的安全证书不是由受信任的证书颁发机构颁发的。

服务器正在使用的 SSL 证书不是通过正式的全球信任的 CA 颁发。推荐购买 GlobalSign SSL,GeoTrust SSL ,Symante SSL 证书,SSL 通常是因为没有正确安装证书,请再检查一下是否删除了原来的测试证书,如果网站使用的证书是正确的,请重新启动 webserver。

问题:此网站出具的安全证书是为其他网站地址颁发的。

一个 SSL 证书所对应的域名是一个全域名 FQDN(Fully Qualified Domain Name),如果证书中的域名是 www.domain.com,则通过其他相近的域名:web.domain.com,app.domain.com,domain.com,系统都会报告和证书中的域名不匹配。如果有多相同主域名的站点需要申请证书,推荐通配型 SSL 证书;如果不是相同主域名则需要购买多域名型 SSL 证书。

问题:本页面包含有不安全的内容。

如果一个页面需要通过 HTTPS 访问被访问,则其中所有的元素都必须是 HTTPS 方式,如果有:图片、JS 脚本,FLASH 插件是通过 HTTP 方式去调用的,就会出现这个错误,最常见的,就是调用 flash 播放插件:codebase=’http://download.macromedia.com/pub/shockwave/
cabs/flash/swflash.cab’,将 http 改成 HTTPS 即可,刷新后测试 SSL 问题有没有解决。

问题:此网站出具的安全证书已过期或还未生效。

这个标识网站使用的 SSL 证书已经过期,请先检查网站证书的有效期,如果网站证书有效期在本日以后,则请检查本地电脑的日期设置,是否正确。如果证书过期了,请尽快联系易维信客服,续费!就能处理好 SSL 错误了。
问题:为什么使用匿名 Diffie-Hellman(ADH) 算法时会收到 ”no shared cipher” 错误?

默认情况下,出于安全原因,OpenSSL 并不启用 ADH 算法。仅在你确实明白了这个算法的副作用时,你才可以启用此算法。
为了使用匿名 Diffie-Hellman(ADH) 算法,你必须在编译 OpenSSL 时使用 ”-DSSL_ALLOW_ADH” 配置选项,并在 SSLCipherSuite 指令中添加 ”ADH”。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4227字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7996909
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...