Nginx负载均衡和反向代理

本文详细介绍了Nginx的负载均衡配置,包括基于uri、cookie、源地址hash和最少连接的调度算法。同时,讲解了如何通过rewrite规则实现域名重定向,以及如何设置反向代理实现客户端IP透传。最后,还提到了利用LNMP搭建wordpress站点。
摘要由CSDN通过智能技术生成

一、nginx负载均衡中常见的算法及原理

1.1 初始环境搭建

两台后端RShttpd服务器配置

#RS1
[root@rs1 ~]# yum install -y httpd
[root@rs1 ~]# echo "10.0.0.7 web1" > /var/www/html/index.html
[root@rs1 ~]# systemctl enable --now  httpd.service
[root@rs1 ~]# curl 127.0.0.1
10.0.0.7 web1
#RS2
[root@rs2 ~]# yum install -y httpd
[root@rs2 ~]# echo "10.0.0.17 web2" > /var/www/html/index.html
[root@rs2 ~]# systemctl enable --now  httpd.service
[root@rs2 ~]# curl 127.0.0.1
10.0.0.17 web2

Nginx反向代理配置

#在主配置http模块中中以下语句块
upstream webservers {
    #hash $request_uri consistent;
   #hash $cookie_sessionid;
    #ip_hash;
    #least_conn;
      server 10.0.0.7:80 weight=1 fail_timeout=5s max_fails=3;
      server 10.0.0.17:80 weight=1 fail_timeout=5s max_fails=3;
      server 127.0.0.1:80 weight=1 fail_timeout=5s max_fails=3 backup;
    }
#子配置文件夹
[root@Centos8 conf]# vim conf.d/pc.conf
server {
   listen 80;
   proxy_cache off;
   #listen 443 ssl;
   #ssl_certificate /apps/nginx/certs/www.pc.com.pem;
   #ssl_certificate_key /apps/nginx/certs/www.pc.com.key;
   #ssl_session_cache shared:sslcache:20m;
   #ssl_session_timeout 10m;
   server_name www.pc.com;
   location / {
     index index.html index.php;
     root /data/nginx/html/pc;
      }
   location /web {
     index index.html
     root /data/nginx/html/mobile;
     proxy_pass http://webservers/;
      }
   }
#重启Nginx,访问并测试
[root@openEuler21 ~]# curl http://www.pc.com/web
10.0.0.7 web1
[root@openEuler21 ~]# curl http://www.pc.com/web
10.0.0.17 web2
#关闭10.0.0.7和10.0.0.17的http服务,测试nginx backup服务器可用性。
[root@openEuler21 ~]# curl http://www.pc.com/web
sorry server

1.2 Nginx调度算法介绍

Nginx 可以基于ngx_http_upstream_module模块提供服务器分组转发、权重分配、状态监测、调度算法等高级功能。

server address [parameters];
#配置一个后端web服务器,配置在upstream内,至少要有一个server服务器配置。
#server支持的parameters如下:
weight=number #设置权重,默认为1,实现类似于LVS中的WRR,WLC等
max_conns=number  #给当前后端server设置最大活动链接数,默认为0表示没有限制
max_fails=number  #后端服务器的下线条件,当客户端访问时,对本次调度选中的后端服务器连续进行检测多少次,如果都失败就标记为不可用,默认为1次,当客户端访问时,才会利用TCP触发对探测后端服务器健康性检查,而非周期性的探测。
fail_timeout=time #后端服务器的上线条件,对已经检测到处于不可用的后端服务器,每隔此时间间隔再次进行检测是否恢复可用,如果发现可用,则将后端服务器参与调度,默认为10秒。
backup  #设置为备份服务器,当所有后端服务器不可用时,才会启用此备用服务器。
down    #标记为down状态,可以平滑下线后端服务器
resolve #当server定义的是主机名的时候,当A记录发生变化会自动应用新IP而不用重启Nginx

hash KEY [consistent];
#基于指定请求报文中首部字段或者URI等key做hash计算,使用consistent参数,将使用ketama一致性hash算法,适用于后端是Cache服务器(如varnish)时使用,co

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值