Linux架构17 全站https, 项目全站https, 阿里云负载均衡, 阿里云https
如下图(采用下面的方式, 上面的方式可以当没必要, 内部通讯没必要https)
外网IP | 内网IP | 身份 | |
---|---|---|---|
lb01 | 10.0.0.4 | 172.16.1.4 | 负载均衡 |
web01 | 172.16.1.7 | web服务器 | |
web02 | 172.16.1.8 | web服务器 |
2.配置web服务器
[root@web01 conf.d]# vim s.linux.com.conf server { listen 80; server_name s.linux.com; location / { root /code/https; index index.html; } } [root@web01 conf.d]# systemctl restart nginx # 同步配置文件到web02 [root@web01 conf.d]# scp s.linux.com.conf 172.16.1.8:/usr/local/nginx/conf/conf.d [root@web02 conf.d]# systemctl restart nginx #配置站点目录文件 [root@web01 conf.d]# echo "https1111" > /code/https/index.html [root@web01 conf.d]# chown -R www.www /code/https [root@web02 conf.d]# mkdir /code/https [root@web02 conf.d]# echo "https2222" > /code/https/index.html [root@web02 conf.d]# chown -R www.www /code/https
[root@web01 conf.d]# scp -r /etc/nginx/ssl-key/ 172.16.1.4:/etc/nginx/
[root@lb01 conf.d]# vim s.linux.com.conf upstream webserver { server 172.16.1.7:80; server 172.16.1.8:80; } server { listen 443 ssl; server_name s.linux.com; ssl_certificate /etc/nginx/ssl-key/server.crt; ssl_certificate_key /etc/nginx/ssl-key/server.key; location / { proxy_pass http://webserver; proxy_set_header host $http_host; } } server { listen 80; server_name s.linux.com; return 302 https://$server_name$request_uri; }
[root@web01 conf.d]# vim phpmyadmin.conf server { listen 80; server_name php.linux.com; location / { root /code/phpmyadmin; index index.php; } location ~ \.php$ { root /code/phpmyadmin; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS on; # 告诉后端php文件是用HTTPS连接的(不配phpmyadmin会报服务器和客户端指示的HTTPS不匹配) include fastcgi_params; } } # 把文件推送的web02上 [root@web01 conf.d]# scp phpmyadmin.conf 172.16.1.8:/etc/nginx/conf.d/
[root@lb01 conf.d]# vim phpmyadmin_proxy.conf upstream phpmyadmin { server 172.16.1.7; server 172.16.1.8; } server { listen 443 ssl; server_name php.linux.com; ssl_certificate /etc/nginx/ssl-key/server.crt; ssl_certificate_key /etc/nginx/ssl-key/server.key; location / { proxy_pass http://phpmyadmin; include proxy_params; } } server { listen 80; server_name php.linux.com; return 302 https://$server_name$request_uri; }
1.购买云主机
如下图,网关和交换机选默认即可(也可以自己创建,创建的机器通过交换机到网关,再到你的电脑,网关要收费)
如下图,公网ip可以选,也可以后面分配或使用弹性公网ip(随意变更)
如下图,安全组,选择开放的端口
如下图,密钥对,在xshell的工具栏,新建用户秘钥生成向导。把秘钥放到阿里云里的秘钥里即可。这里自定义密码即可
设置实例名称和主机名,资源组可以不用设置,可以设置自动释放时间
如下图,给创建的实例设置外网(绑定弹性ip),就可用xshell进行连接
点击创建弹性公网IP(按理计费,带宽拉满也是一样的价格),创建完,实例上就可以绑定弹性公网ip了
如一开始设定外网地址,就会固定公网地址,不能移到其他实例上(不想用只能释放)。弹性ip可以解绑,绑定到其他实例
# 在web02服务器上操作 (通过弹性ip绑定解绑切换连接) # 设置计算机名 [root@iZuf65apasapxyjeojd2y7Z ~]# hostnamectl set-hostname web02 [root@iZuf65apasapxyjeojd2y7Z ~]# bash # 刷新 # 安装nginx [root@web02 ~]# vim /etc/yum.repos.d/nginx.repo ---------------------------------- [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true ----------------------------------- [root@web02 ~]# yum install -y nginx [root@web02 ~]# yum install -y lrzsz # 安装传文件命令 [root@web02 conf.d]# vim /etc/nginx/nginx.conf/code.conf ----------------------------- server { listen 80; server_name localhost; location / { root /code; index index.html; } } ----------------------------- [root@web02 conf.d]# systemctl restart nginx [root@web02 conf.d]# mkdir /code [root@web02 conf.d]# echo "web02222222222" > /code/index.html # 在web01上操作 [root@iZuf65apasapxyjeojd2y8Z ~]# hostnamectl set-hostname web01 [root@iZuf65apasapxyjeojd2y8Z ~]# bash [root@web01 ~]# yum install -y lrzsz # 安装nginx 同上 [root@web01 conf.d]# mkdir /code [root@web01 conf.d]# echo "web0111111111" > /code/index.html
# 配负载均衡 如下图,这里选择SLB, 创建传统型负载均衡 可用区一定要选对
# 下面做端口转发,当跳板机使用 如下图,点击开始配置或者点击监听配置向导
如下图,这里选择端口转发TCP/IP转发的,转到web服务的22端口上
监听名称无所谓,可以写上,相当于upstream组的名字
如下图,虚拟服务器组就是upstream(每新建一个虚拟服务器组相当于建了upstream),添加服务器
健康检查无所谓,最后点提交,完成。如下图,因为是端口转发,自动识别成四层负载
此时用xshell输入负载均衡外网ip和5555端口就直接连接到web01了
企业里可以通过负载均衡,多端口跳转到后端多个服务器。后端服务器不用外网ip(端口转发可代替跳板机)
这里点击监听配置向导,再配置6666端口做web02端口转发,当跳板机用
# 正式开始配负载均衡
点击监听配置向导,再添加监听端口,七层负载均衡选HTTP协议,如下图
如下图,添加服务器 端口为80,权重可以修改
如下图,自动判断出是七层负载均衡
访问七层负载均衡ip测试效果
2.解析域名 3.申请域名对应的https证书 # 在阿里云进入数字证书管理服务,SSL证书购买,这里购买免费证书即可,点击证书申请(合理需要有域名)
4.将https证书部署到服务器 # 在证书中选一个,点击部署。如下图 也可以点击下载,自己上传到服务器上
在负载均衡控制台,把80端口删除,添加443端口 如下图
如下图选择证书,添加服务器,提交,此时https可以访问,但是http不可访问
点击监听配置向导,再追加80端口跳转,点击监听跳转,目的监听需要选择 如下图
提交即可 如下图 测试http即可跳转https
阿里云负载均衡简单使用示例(2024年)
应用型ALB 七层 网络型NLB 四层 CLB和ALB,NLB是同一个东西,现在分成了ALB和NLB 1. 登录阿里云控制台 2. 在选择地域内创建专有网络VPC,使用 192.168.0.0/16 网段,配置两个交换机,分别落在不同可用区(免费) 3. 根据业务需要创建安全组 4. 创建两台ECS实例,分别挂在不同的交换机下 5. 创建公网ALB,并在ALB中创建服务器组,将ECS 挂载到该服务器组下 创建ALB 选择地域
实例网络类型选择公网(这里一定要注意,后面要变公网就得下面的服务都有公网ip了) 选择可用区,选择对应交换机 一定要选两个可用区(不同的物理机房,保证安全) IP模式 固定IP 功能版本(实例费) 选基础版 (WAF增强版支持流量穿透,但是贵) 填写实例名称 点击立即购买 点击立即开通 创建服务器组 在左侧应用型负载均衡ALB下的服务器组 点击创建服务器组 填写服务器组名称 选择vpc 选择调度算法 高级配置默认即可 (健康检查默认服务端口80) 健康检查默认开着的 点击创建 #因为目前服务没装,所以检查什么也查不到 2台ECS服务装服务 点远程连接 apt update;apt install nginx 修改index.html #把两台机器挂到服务器组里 在左侧应用型负载均衡ALB下的服务器组 点击编辑后端服务器 点击添加后端服务器 把两台服务器勾上,点下一步 设置服务器端口,权重,都勾上,点确定 6. 在ALB下创建监听关联服务器组 #在ALB下创建监听关联服务器组 在左侧应用型负载均衡ALB下的实例里,点击右侧的创建监听 输入监听端口80 输入监听名称 可以不写 点下一步 选择服务器组 选服务器类型 选对应的服务器组 点下一步,提交 7. 在公网浏览器上测试,实现负载均衡的效果 #在公网浏览器上测试,实现负载均衡的效果 #如果上面创建成私网alb了,建议删了重创。不然在左侧应用型负载均衡ALB下的实例实例详情下,修改网络类型私网变公网(下面每个服务买一个弹性ip) #如果alb下实例是内网,只能在内网内负载均衡 在左侧应用型负载均衡ALB下的实例里,实例详情下,有DNS名称(ALB的),输入浏览器可以测试 8. 在云解析中添加CNAME 记录,实现负载均衡效果 #在云解析中添加CNAME 记录,实现负载均衡效果(绑到一个域名上)
进入云解析DNS 产品 当前已有公网域名情况下,左侧公网DNS解析,权威解析里,在以后的域名后面点击设置解析 点击添加记录 记录类型 CNAME 输入主机记录 alb (组成新域名) 记录值输入上面的ALB的DNS名(得是公网alb)
浏览器输入新域名测试