Nginx 反向代理 + 高可用负载均衡




·环境准备:
多准备几台 Nginx服务器或Apache2服务器作为后端Web集群
·可以加上这个参数:
proxy_set_header Host $http_host;# 这样就能够将客户端请求的域名直接传给后端服务器,例如:后端有多个域名,www和mail时,传了这个 Host,后端就能够区分客户端具体访问的是哪个 web了。
一、配置 Nginx 反向代理:
1、【使用端口代理】假设后端只有一台Web服务器:
(1)再用一台Linux服务器,配置为Web服务器:
apt install -y nginxecho "This is 8000 port Nginx" > /var/www/html/index.nginx-debian.html
(2)回到原来的Nginx服务器,编辑 Nginx反向代理
vim /etc/nginx/sites-enable/default# 定义一个虚拟主机,监听 8000、8001端口的请求,将该请求反向代理到后端Nginx服务器

将请求反向代理到 192.168.100.100(后端服务器)的80端口
(3)再客户端上访问:
·访问80或443端口:
·访问 8000 端口:
成功代理到后端服务器
二、仅使用一个端口,根据访问的不同目录将请求代理给不同服务器或不同端口(且将请求代理给Apache2,可以做到例如Nginx处理静态资源,Apache处理动态资源):
·假设后端有多台Nginx服务器:
(1)Nginx-Server01:
apt install -y nginxmkdir /var/www/html/nginx-01echo "This is Nginx Server-01" > /var/www/html/nginx-01/index.nginx-debian.html
(2)Apache2-Server02:
apt install -y apache2mkdir /var/www/html/apache-02echo "This is Apache2 Server-02" > /var/www/html/apache-02/index.html
(3)Apache2-Server03:
apt install -y apache2mkdir /var/www/html/apache-03echo "This is Apache2 Server-03" > /var/www/html/apache-03/index.html
1、配置 Nginx 反向代理:
vim /etc/nginx/sites-enable/default
将 /nginx-01/ 反向代理到 192.168.100.10的80端口的/nginx-01
2、在 客户端上尝试访问:
(1)Nginx-01:
(2)Apache-02:
(3)Apache-03:
三、配置 Nginx 高可用负载均衡:
能够自动检测后端服务器集权是否故障,当故障后,能够在客户端无感的情况下自动进行切换
1、配置 Nginx 负载均衡:
vim /etc/nginx/sites-enable/default
192.168.100.11的权重是1,192.168.100.10的权重是2因此,当用户访问时,假设有三次请求,第一次、第二次请求会发送给192.168.100.10第三次会发送给192.168.100.11。然后按照这样的顺序轮询
2、在 客户端上进行访问,不出意外的话将会优先访问到 Nginx-01(因为设置了权重)
3、再次访问,检验负载均衡配置:
4、停止 Nginx-01 和 Apache-02的Web服务,验证高可用(看能否访问到 Apache-03)
Nginx-01:systemctl stop nginxApache-02:systemctl stop nginx

访问成功!高可用负载均衡配置完成。
5、backup 也是可以设置权重的:
四、配置 https页面的反向代理:
1、生成证书:
(1)编辑证书属性:
vim /etc/ssl/openssl.cnf:set number:202
(2)创建证书颁发机构,并生成证书:
/usr/lib/ssl/misc/CA.pl -newca //生成CA根证书颁发机构/usr/lib/ssl/misc/CA.pl -newreq-nodes //生成一个证书申请/usr/lib/ssl/misc/CA.pl -sign //签发证书
此时会在当前目录看到证书及其私钥:(newreq.pem是证书申请,可以直接删除)
2、配置 后端服务器 的 https页面:
(1)将 证书及私钥 传给后端服务器:
scp ~/new* root@192.168.10.80:/etc/sslscp ~/new* root@192.168.10.81:/etc/sslscp ~/new* root@192.168.10.82:/etc/sslscp ~/new* root@192.168.10.83:/etc/ssl
(2)【Nginx】编辑 https 页面:
vim /etc/nginx/sites-enalbed/default
重启服务
(3)【Apache】编辑 https 页面:
a2enmod sslvim /etc/apache2/sites-enalbed/000-default.conf
重启服务
3、【https】配置 Nginx反向代理 - 高可用负载均衡:
4、配置 Nginx 反向代理服务器:
(1)编辑 Nginx:
apt install -y nginxvim /etc/nginx/sites-enabled/default
重启服务
5、在 客户端上进行访问:
(1)在 客户端 上访问 http 页面:
(2)在 客户端 上访问 https 页面:
五、定义 错误提示页面:(未配置成功)
echo "Web service comming soon.." > /var/www/html/50x.htmlvim /etc/nginx/sites-enable/default
·参考文献: