现在网络完全越来越受到重视, 因此https也是大势所趋, 以往nginx都是工作在http方式下, 其实nginx在https下工作也挺好的。 这里将分步骤的逐步实现一套采用nginx, haproxy, keepalived实现的https系统, 并且系统没有单点故障, 基本适应中小系统的安全需要。
1. Nginx https安装 这个文章主要是安装支持https的nginx, 源代码装过程
2. https安装(2)nginx配置 继承上一个文章, 记录配置过程, 然后实现https服务
本文继承前两个文章, 记录通过nginx实现https的功能, 并且通过haproxy将两台nginx的https进行整合, 统一对外提供服务。
但是本文的方法, 在haproxy上仍然存在单点故障, 下一篇文章, 将修正这个错误
本文记录详细的安装过程, 供大家参考。
一. 准备linux操作系统
本文的nginx和haproxy都是在linux下进行的安装与测试, 因此需要linux计算机。
我们采用vmware作为虚拟机软件, 采用下面的已经安装好的虚拟机镜像做为操作系统。 这样节省了安装时间。
链接:http://pan.baidu.com/s/1nutqTkP 密码:f4bh
- 安装好vmware软件, 这个百度上搜索, 或者参考: 虚拟机vmware新手使用教程
- 下载好虚拟机软件后解压缩到一个比较大的硬盘空间, 记录下目录地址
- 启动虚拟机软件, 在文件菜单中, 选择打开按钮, 然后选择好, 您刚才解压缩的文件目录, 选择其中*.vmx文件, 然后打开
- 选择运行这个软件, 最后您可以开始这个虚拟机了, 虚机运行后, 最后进入登录界面, 在登录界面中输入 root作为用户名, 密码为 thoughtpolice 或者root
或者查看README-vmware-image.txt 文件
- 进入虚拟机后, 使用 ifconfig命令, 检查一下 虚拟机是否网络已经正确启动, 并且查看一下, 这个虚拟机的ip地址
- 运行 setup命令, 进入防火墙选项 关闭防火墙
- 安装xshell软件, 在xshell软件里面配置一个连接到您虚拟机的连接, 然后连接上。这样方便后续的操作等
- 安装xftp软件 方便上传相关文件到服务器。
上述软件, 客户baidu搜索相关安装方法等。
二. nginx下https的安装和配置
安装https01服务器
本 文目标是测试多机负载均衡下https的工作状况, 因此我们需要安装至少2台nginx服务器, 并且每个服务器都要支持https协议, 因此我们需 要首先安装1台nginx, 然后在配置相关的https服务, 测试没问题了, 然后在站另外一台nginx, 最后安装负载均衡软件。
关于nginx的安装, https的安装, https的配置请参考下面的文章进行
参考上面文章, 安装配置完成nginx的https后, 进行测试一下, 配置文件为:
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name test.iigrowing.cn; location / { root html; index index.html index.htm; } } server { listen 443; server_name test.iigrowing.cn; ssl on; ssl_certificate /etc/pki/tls/certs/rsyslog.crt; ssl_certificate_key /etc/pki/tls/certs/rsyslog.key; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } } }
测试https01服务器
进入下图目录中, 编辑hosts文件, 添加一行记录
192.168.128.138 test.iigrowing.cn
另外, 请用您的正确ip地址替换上面的ip地址, 用您喜欢的域名替换测试的域名。 这里用域名就是方便, 啥域名或者使用ip不影响您的测试结果。
- 启动一个浏览器, 在浏览器里面输入 https://test.iigrowing.cn
然后, 应该能看到 正确的显示了额,
您也可用修改nginx的html目录下的 index.html文件的内容, 来仔细测试您的工作成果。
- 关闭这个https01服务器, 然后在vmware的虚拟机菜单中选择
最后在弹出菜单中选择 链接克隆选项 这样可以节省点磁盘空间。 虚拟机名称可为 https02
- 克隆完毕启动这个新的虚拟机。
启动虚拟机后, 要先登录, 然后立即检查是否网络启动正常, 以及网络的ip地址, 若是网络不正常。
请运行setup命令
之后选择这个
填写下面的信息
最后选择 保存退出, 然后运行下面的命令, 检查新网卡是否启动正常了
service network restart 启动网卡(英文部分为命令)
Ifconfig 检查网络是否正常启动
- 在xshell中配置一个新的连接, 用这个配置连接到新的虚拟机
- 进入/usr/local/nginx/sbin下, 运行./nginx 启动nginx, 然后测试这个https是否正常工作了。
到此我们准备好了,两个有https功能的nginx, 另外两个nginx的证书等信息都是完全一致的, 我们是采用虚拟机clone进行的。里面数据是一致的。
三. 安装haproxy
关于haproxy的功能, 安装配置详情请参考下面的文章
这里简单进行安装配置, 然后进行配置
最后发现国外网站, 下载速度慢, 可以用本文提供的 下载好的版本
- 下载本文提供的软件
- 启动xftp上传文件, 过程略
- 解压缩上传后的软件包
- 进入解压缩后的目录
- 运行make PREFIX=/usr/local/haproxy install 进行编译安装
- 最后执行 cd /usr/local/haproxy 目录
- 然后执行 mkdir conf 创建配置目录
- 进入文件目录, 执行vi haproxy.cfg 命令创建配置文件, 内容如下
global log 127.0.0.1 local0 info #[err warning info debug] maxconn 4096 user root group root daemon nbproc 1 pidfile /home/admin/haproxy/logs/haproxy.pid defaults maxconn 2000 contimeout 5000 clitimeout 30000 srvtimeout 30000 frontend https bind :443 default_backend cluster_https backend cluster_https mode tcp balance roundrobin server https01 192.168.128.136:443 server https02 192.168.128.137:443 listen admin_stats bind 0.0.0.0:1080 mode http log 127.0.0.1 local0 err stats uri /admin?stats
- 执行下面命令创建目录 mkdir -p /home/admin/haproxy/logs/
- 执行 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
- 通过 netstat -ntlp 查看是否 启动了443端口
- 通过 http://test.iigrowing.cn:1080/admin?stats查看相关统计信息
最后. 测试整个haproxy下的用nginx实现的https程序
- 登录https01服务器, 进入/usr/local/nginx/html 下 编辑html 修改内容, 添加些字符串 111111111111等, 这样方便我们了解到 我们访问的是https01机器
- 登录https02服务器, 进入/usr/local/nginx/html 下 编辑html 修改内容, 添加些字符串 222222222222等, 这样方便我们了解到 我们访问的是https01机器
- 启动firefox浏览器 输入 https://test.iigrowing.cn请确保协议时https, 另外域名解析到 haproxy的地址上。
- 在启动另外一个chrome浏览器, 然后同样输入上述的地址, 多次测试发现有时显示带 111有时显示带222的,测试基本正常