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

noteId: 214F98E6D7EE4D11B9794B67ADBC777A · 原始路径:/ALL/Linux - A模块/服务配置/Nginx、Nginx反向代理 - 80端口TCP/Nginx 反向代理 + 高可用负载均衡.note

·环境准备:

多准备几台 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

·参考文献:

https://mp.weixin.qq.com/s/WQxP5KXEvs0YzEomgoeyNA