网易首页 > 网易号 > 正文 申请入驻

介绍下Nginx 反向代理与负载均衡

0
分享至

Nginx的代理功能与负载均衡功能是最常被用到的,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细。

Nginx 代理服务的配置说明

1、设置 404 页面导向地址

error_page 404 https://www.runnob.com; #错误页
proxy_intercept_errors on; #如果被代理服务器返回的状态码为400或者大于400,设置的error_page配置起作用。默认为off。

2、如果我们的代理只允许接受get,post请求方法的一种

proxy_method get; #支持客户端的请求方法。post/get;

3、设置支持的http协议版本

proxy_http_version 1.0 ; #Nginx服务器提供代理服务的http协议版本1.0,1.1,默认设置为1.0版本

4、如果你的nginx服务器给2台web服务器做代理,负载均衡算法采用轮询,那么当你的一台机器web程序iis关闭,也就是说web不能访问,那么nginx服务器分发请求还是会给这台不能访问的web服务器,如果这里的响应连接时间过长,就会导致客户端的页面一直在等待响应,对用户来说体验就打打折扣,这里我们怎么避免这样的情况发生呢。这里我配张图来说明下问题。

如果负载均衡中其中web2发生这样的情况,nginx首先会去web1请求,但是nginx在配置不当的情况下会继续分发请求道web2,然后等待web2响应,直到我们的响应时间超时,才会把请求重新分发给web1,这里的响应时间如果过长,用户等待的时间就会越长。

下面的配置是解决方案之一。

proxy_connect_timeout 1; #nginx服务器与被代理的服务器建立连接的超时时间,默认60秒
proxy_read_timeout 1; #nginx服务器想被代理服务器组发出read请求后,等待响应的超时间,默认为60秒。
proxy_send_timeout 1; #nginx服务器想被代理服务器组发出write请求后,等待响应的超时间,默认为60秒。
proxy_ignore_client_abort on; #客户端断网时,nginx服务器是否终端对被代理服务器的请求。默认为off。

5、如果使用upstream指令配置啦一组服务器作为被代理服务器,服务器中的访问算法遵循配置的负载均衡规则,同时可以使用该指令配置在发生哪些异常情况时,将请求顺次交由下一组服务器处理。

proxy_next_upstream timeout; #反向代理upstream中设置的服务器组,出现故障时,被代理服务器返回的状态值。

状态值可以是:error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off

  1. error:建立连接或向被代理的服务器发送请求或读取响应信息时服务器发生错误。
  2. timeout:建立连接,想被代理服务器发送请求或读取响应信息时服务器发生超时。
  3. invalid_header:被代理服务器返回的响应头异常。
  4. off:无法将请求分发给被代理的服务器。
  5. http_400,....:被代理服务器返回的状态码为400,500,502,等。

6、如果你想通过http获取客户的真是ip而不是获取代理服务器的ip地址,那么要做如下的设置。

proxy_set_header Host $host; #只要用户在浏览器中访问的域名绑定了 VIP VIP 下面有RS;则就用$host ;host是访问URL中的域名和端口 www.taobao.com:80
proxy_set_header X-Real-IP $remote_addr; #把源IP 【$remote_addr,建立HTTP连接header里面的信息】赋值给X-Real-IP;这样在代码中 $X-Real-IP来获取 源IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来,用 【,】隔开;代码中用 echo $x-forwarded-for |awk -F, '{print $1}' 来作为源IP

关于X-Forwarded-For与X-Real-IP的一些相关文章可以查看:HTTP 请求头中的 X-Forwarded-For 。

7、下面是我的一个关于代理配置的配置文件部分,仅供参考。

include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型,默认为text/plain
#access_log off; #取消服务日志
log_format myFormat ' $remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
access_log log/access.log myFormat; #combined为日志格式的默认值
sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。
proxy_connect_timeout 1; #nginx服务器与被代理的服务器建立连接的超时时间,默认60秒
proxy_read_timeout 1; #nginx服务器想被代理服务器组发出read请求后,等待响应的超时间,默认为60秒。
proxy_send_timeout 1; #nginx服务器想被代理服务器组发出write请求后,等待响应的超时间,默认为60秒。
proxy_http_version 1.0 ; #Nginx服务器提供代理服务的http协议版本1.0,1.1,默认设置为1.0版本。
#proxy_method get; #支持客户端的请求方法。post/get;
proxy_ignore_client_abort on; #客户端断网时,nginx服务器是否终端对被代理服务器的请求。默认为off。
proxy_ignore_headers "Expires" "Set-Cookie"; #Nginx服务器不处理设置的http相应投中的头域,这里空格隔开可以设置多个。
proxy_intercept_errors on; #如果被代理服务器返回的状态码为400或者大于400,设置的error_page配置起作用。默认为off。
proxy_headers_hash_max_size 1024; #存放http报文头的哈希表容量上限,默认为512个字符。
proxy_headers_hash_bucket_size 128; #nginx服务器申请存放http报文头的哈希表容量大小。默认为64个字符。
proxy_next_upstream timeout; #反向代理upstream中设置的服务器组,出现故障时,被代理服务器返回的状态值。error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off
#proxy_ssl_session_reuse on; 默认为on,如果我们在错误日志中发现“SSL3_GET_FINSHED:digest check failed”的情况时,可以将该指令设置为off。

Nginx 负载均衡详解

首先给大家说下upstream这个配置的,这个配置是写一组被代理的服务器地址,然后配置负载均衡的算法。这里的被代理服务器地址有2中写法。

upstream mysvr {
server 192.168.10.121:3333;
server 192.168.10.122:3333;
}
server {
....
location ~*^.+$ {
proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表
}
}

然后,就来点实战的东西。

1、热备:如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB.....

upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333 backup; #热备
}

2、轮询:nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB....

upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333;
}

3、加权轮询:跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB....

upstream mysvr {
server 127.0.0.1:7878 weight=1;
server 192.168.10.121:3333 weight=2;
}

4、ip_hash:nginx会让相同的客户端ip请求相同的服务器。

upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333;
ip_hash;
}

5、如果你对上面4种均衡算法不是很理解,可以查看Nginx 配置详解,可能会更加容易理解点。

到这里你是不是感觉nginx的负载均衡配置特别简单与强大,那么还没完,咱们继续哈,这里扯下蛋。

关于nginx负载均衡配置的几个状态参数讲解。

  1. down,表示当前的server暂时不参与负载均衡。
  2. backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
  3. max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
  4. fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。

upstream mysvr {
server 127.0.0.1:7878 weight=2 max_fails=2 fail_timeout=2;
server 192.168.10.121:3333 weight=1 max_fails=2 fail_timeout=1;
}

到这里应该可以说nginx的内置负载均衡算法已经没有货啦。如果你像跟多更深入的了解nginx的负载均衡算法,nginx官方提供一些插件大家可以了解下。

本文地址:https://www.linuxprobe.com/introduce-nginx-reverse.html

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
众生相!湖人0-3陷入绝境,赛后詹姆斯直接离场,主场观众狂嘘

众生相!湖人0-3陷入绝境,赛后詹姆斯直接离场,主场观众狂嘘

天涯沦落人
2024-04-26 12:45:18
NBA官宣年度大奖:库里当选最佳关键球员 10项关键数据联盟第一

NBA官宣年度大奖:库里当选最佳关键球员 10项关键数据联盟第一

罗说NBA
2024-04-26 07:04:11
4元拿下5600亩地承包权,开鲁“张氏兄弟”身份曝光,果然不一般

4元拿下5600亩地承包权,开鲁“张氏兄弟”身份曝光,果然不一般

叶公子
2024-04-26 00:13:10
新华社快讯:以色列公共广播公司25日报道,以总理内塔尼亚胡批准在拉法开展地面行动的计划。

新华社快讯:以色列公共广播公司25日报道,以总理内塔尼亚胡批准在拉法开展地面行动的计划。

新华社
2024-04-26 01:52:09
70岁赵雅芝去世,世间再无白素贞?赵雅芝工作室回应了

70岁赵雅芝去世,世间再无白素贞?赵雅芝工作室回应了

拾娱先生
2024-04-25 15:30:08
晚上22点!CCTV5直播国足收官战,多名主力回归,客场复仇亚洲第3

晚上22点!CCTV5直播国足收官战,多名主力回归,客场复仇亚洲第3

大咖唠体育
2024-04-26 09:36:02
噩耗!34岁网红珍珍去世,每天直播健身瘦45斤,知情人曝原因!

噩耗!34岁网红珍珍去世,每天直播健身瘦45斤,知情人曝原因!

花花lo先森
2024-04-26 10:51:04
好戏开始!余承东:10.5万辆了!雷军:今年10万…马斯克:我来了

好戏开始!余承东:10.5万辆了!雷军:今年10万…马斯克:我来了

资本百科
2024-04-25 13:09:56
“一键脱衣”的华为P70,内娱第一女菩萨看到都慌了!

“一键脱衣”的华为P70,内娱第一女菩萨看到都慌了!

品牌营销官
2024-04-25 20:35:21
几千年都没有变过!

几千年都没有变过!

吴女士
2024-04-26 11:16:12
金靖回应不官宣结婚原因,大赞老公舒奕橙温柔,孩子代号首曝光

金靖回应不官宣结婚原因,大赞老公舒奕橙温柔,孩子代号首曝光

扒虾侃娱
2024-04-25 20:46:34
突发!美元失信!穆迪下调美元评级至负面,中俄贸易率先抛弃美元

突发!美元失信!穆迪下调美元评级至负面,中俄贸易率先抛弃美元

资本百科
2024-04-26 09:29:04
惠州房价腰斩?有网友爆料某房源从挂牌105.5万,到现在的53万…

惠州房价腰斩?有网友爆料某房源从挂牌105.5万,到现在的53万…

火山诗话
2024-04-26 08:00:03
詹姆斯创两项生涯最差:赛后盛赞掘金 解析崩盘原因+谈0-3绝境

詹姆斯创两项生涯最差:赛后盛赞掘金 解析崩盘原因+谈0-3绝境

醉卧浮生
2024-04-26 13:51:02
清凉峰一男一女后续:妻子已回家,丈夫疑似被绿,评论区太黄了!

清凉峰一男一女后续:妻子已回家,丈夫疑似被绿,评论区太黄了!

叶公子
2024-04-25 20:54:44
扣爽了!戈登生涯之夜爆砍29分15板 搅得湖人内线鸡犬不宁!

扣爽了!戈登生涯之夜爆砍29分15板 搅得湖人内线鸡犬不宁!

直播吧
2024-04-26 12:42:50
周鸿祎爬车视频刷屏网络 成为2024北京车展焦点,本人回应

周鸿祎爬车视频刷屏网络 成为2024北京车展焦点,本人回应

环球Tech
2024-04-26 08:32:36
57岁金龟子现身澳门永利皇宫,脸色苍白疲惫,网友:看样子输麻了

57岁金龟子现身澳门永利皇宫,脸色苍白疲惫,网友:看样子输麻了

娱圈小愚
2024-04-25 09:39:12
王思聪:即便我们卖股份,卖地皮,但我们没有卖国,没有烂尾楼

王思聪:即便我们卖股份,卖地皮,但我们没有卖国,没有烂尾楼

泸沽湖
2024-04-26 10:19:05
美智库:普京政权正摇摇欲坠,随时可能解体

美智库:普京政权正摇摇欲坠,随时可能解体

日新说Copernicium
2024-04-26 04:45:16
2024-04-26 16:54:44
linux系统运维之家
linux系统运维之家
科技资讯
1392文章数 7553关注度
往期回顾 全部

科技要闻

中国车企“五常”激战北京车展

头条要闻

财政局副局长向县委书记行贿10万美元 3月后升任局长

头条要闻

财政局副局长向县委书记行贿10万美元 3月后升任局长

体育要闻

库里当选最佳关键球员 10项数据联盟第一

娱乐要闻

金靖回应不官宣恋情结婚的原因

财经要闻

24年后再产纯净水 农夫山泉为何要打自己脸

汽车要闻

2024北京车展 比亚迪的自驱力让对手紧追猛赶

态度原创

游戏
教育
房产
时尚
军事航空

《剑星》开发者们曾比赛打BOSS 增进对战斗系统了解

教育要闻

高考重大改革!“985”、“211”时代终结,“101计划”时代全面到来!

房产要闻

涉及黄埔、番禺、增城!广州新一轮大规模征地启动

减龄又清爽的夏季穿搭!爱美女人照着搭配真好看,优雅显气质

军事要闻

以军称已完成对拉法地面军事行动准备工作

无障碍浏览 进入关怀版