Nginx负载均衡和反向代理

本文介绍了Nginx的负载均衡策略,包括round-robin、ip_hash和least_conn,并通过实例展示了如何配置反向代理。通过upstream模块创建服务器池,设置了权重、健康检查和故障转移。此外,还提到了不同的调度算法如fair和url_hash,以及反向代理的优化配置,如proxy_set_header和proxy_next_upstream。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ngx_http_proxy_module 代理模块 用于把请求后抛给服务器节点或upstream服务池
ngx_http_upstream_module 负载均衡模块 可以实现网站的负载均衡和健康检查 创建一个web服务器池子

nginx 负载均衡有三种模式
1 round-robin 轮训调度
2 ip_hash 一定周期内同一个ip访问同一台主机 能够解决session的问题
3 least_conn 最少连接数调度

三台虚拟机(一台Nginx调度器,两台Web)
Nginx 10.125.192.9
第一步,部署后端web1 web2
echo ‘2222222’ > /var/www/html/index.html
echo ‘1111111’ > /var/www/html/index.html
/etc/init.d/httpd restart

第二步 部署nginx反向代理 放入http{}标签中 也可以单独写在子配置文件中
upstream webserver {
#ip_hash; #每个用户根据访问的IP分配一个固定的后端服务器(根据情况是否添加)
server 10.125.192.4 weight=3; #weight权重 访问3次192.4 访问1次192.1
server 10.125.192.1 weight=1;
server 10.125.192.2 max_fails=3 fail_timeout=30;#如果有三次连接失败,30秒后再检查1次,只会检查一次,除非重新加载配置文件
server 10.125.192.3 down; #当前的服务器不参与负载 宕机服务器
server 10.125.192.5 backup; #备用服务器(所有服务器都坏了才使用到)
}
server {
listen 80;
server_name www.aaa.com;
location / {
proxy_pass http://webserver; #要与upstream 定义的名称相同
proxy_set_header Host $host; #Nginx代理会向后转发域名,不加这句话就会向后转发IP 有可能造成和访问域名结果不同 h o s t 向 后 转 发 时 可 以 添 加 端 口 如 : host 向后转发时可以添加端口如: hosthost:8080
proxy_set_header X-Forwarded-For $remote_addr; #服务器端会记录真实客户端IP,不加会记录代理本身IP
proxy_next_upstream http_502 http_504 http_404 http_403 error timeout invalid_header; #出错502 504 404 403等,尝试下一个节点
prox_http_version 1.1; #nginx反向代理默认使用http 1.0短链接
}
}

upstream模块支持的代理方式有proxy_pass fastcgi_pass memcached_pass
rr 轮训(默认)
wrr 加权轮训
ip_hash
fair 根据服务器RS的响应时间分配请求 按后端服务器的响应时间来分配请求。响应时间短的优先分配
url_hash按访问url的hash结果来分配请求,使每一个url定向到同一个后端服务器。后端服务器为缓存时比较有效

ip_hash调度方法
upstream favresin{
ip_hash;
server 10.0.0.10:8080;
server 10.0.0.11:8080;
}

fair调度方法
upstream favresin{
server 10.0.0.10:8080;
server 10.0.0.11:8080;
fair;
}

url_hash 调度方法
upstream resinserver{
server 10.0.0.10:7777;
server 10.0.0.11:8888;
hash $request_uri;
hash_method crc32;
}
注意:在upstream中加入hash语句。server语句中不能写入weight等其他的參数,hash_method是使用的hash算法

反向代理的一些优化配置

upstream backend {
     server 192.168.0.1;
     keepalive 32;     #长连接
}
server {
    .......
location / {
    proxy_pass http://backend;
    proxy_http_version 1.1;                #nginx反向代理默认使用http 1.0短链接
    proxy_set_header Connection ""; #清除Connection头字段
    proxy_set_header Host    $http_host;
    proxy_set_header X-Forwarded-For $remote_addr; 
    roxy_next_upstream erro timeout   http_404 http_403;
    proxy_connec_timeout 30s;        #代理连接web超时时间
    proxy_read_timeout 30s;            #代理等待web响应超时时间
    proxy_send_timeout 30s;           #web回传数据到代理超时时间
    proxy_buffering on;                    #开启代理缓冲区,web回传数据至缓冲区
    proxy_buffer_size 32k;              #代理接收web响应的头信息的缓冲区大小
    proxy_buffer 4 128k;                 #缓冲代理接收单个长连接内包含的web响应的数量和大小 
  }
}

常用参数
1 proxy_set_header Host $http_host; 向后端服务器发送真实用户访问地址
2 proxy_set_header X-Forwarded-For $remote_addr; 向后端服务器发送真实用户IP
3 proxy_next_upstream erro timeout http_404 http_403 如果后端应用服务器访问超时或报404 403错误则自动跳过报错服务器,把请求交给负载均衡池中其他服务器处理, 注:404 403等可以自定义如希望出现413错误,http_413

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值